Windows Forms («WinForms») — это библиотека классов GUI, включенная в .NET Framework. Это сложная объектно-ориентированная оболочка вокруг Win32 API , позволяющая разрабатывать настольные и мобильные приложения Windows, ориентированные на .NET Framework .
WinForms в первую очередь управляется событиями . Приложение состоит из нескольких форм (отображается как окна на экране), которые содержат элементы управления (метки, кнопки, текстовые поля, списки и т. Д.), С которыми пользователь взаимодействует напрямую. В ответ на взаимодействие с пользователем эти элементы управления вызывают события, которые могут быть выполнены программой для выполнения задач.
Как и в Windows, все в WinForms — это элемент управления, который сам по себе является типом окна. Базовый класс Control предоставляет базовые функции, включая свойства для установки текста, местоположения, размера и цвета, а также общий набор событий, которые можно обрабатывать. Все элементы управления получают из класса Control, добавляя дополнительные функции. Некоторые элементы управления могут содержать другие элементы управления, например, для повторного использования ( Form , UserControl ) или макета ( TableLayoutPanel , FlowLayoutPanel ).
Как включить Windows Forms в Visual Studio.
WinForms поддерживается с оригинальной версии .NET Framework (v1.0) и по-прежнему доступна в современных версиях (v4.5). Тем не менее, он больше не находится в активной разработке, и новые функции не добавляются. Согласно 9 разработчикам Microsoft на конференции Build 2014 :
Windows Forms продолжает поддерживаться, но в режиме обслуживания. Они будут исправлять ошибки по мере их обнаружения, но новая функциональность отключена от таблицы.
Кросс-платформенная библиотека с открытым исходным кодом Mono обеспечивает базовую реализацию Windows Forms, поддерживая все функции, реализованные Microsoft в .NET 2.0. Однако WinForms не активно разрабатывается в Mono, и полная реализация считается невозможной, учитывая, как неразрывно связана инфраструктура с родным Windows API (который недоступен на других платформах).
Смотрите также:
- Документация Windows Forms на MSDN
Создание простого приложения WinForms с помощью Visual Studio
В этом примере показано, как создать проект приложения Windows Forms в Visual Studio.
Создание проекта Windows Forms
- Запустите Visual Studio.
- В меню « Файл» выберите « Создать» , а затем « Проект» . Откроется диалоговое окно « Новый проект ».
- На панели « Установленные шаблоны» выберите «Visual C #» или «Visual Basic».
- Над средней областью вы можете выбрать целевую структуру из раскрывающегося списка.
- В средней области выберите шаблон приложения Windows Forms .
- В текстовом поле « Имя» введите имя для проекта.
- В текстовом поле « Расположение» выберите папку для сохранения проекта.
- Нажмите « ОК» .
- Разработчик Windows Forms Designer открывает и отображает Form1 проекта.
Добавить элементы управления в форму
Как сделать установочник/инсталлятор Windows Forms приложения. (1. Обзор результата)
- В палитре Toolbox перетащите элемент управления Button в форму.
- Нажмите кнопку, чтобы выбрать его. В окне «Свойства» установите для свойства « Text Приветствие» .
Введите код
- Дважды нажмите кнопку, чтобы добавить обработчик событий для события Click . Редактор кода откроется с точкой вставки, помещенной в функцию обработчика события.
- Введите следующий код: C #
MessageBox.Show(«Hello, World!»);
VB.NET
MessageBox.Show(«Hello, World!»)
Запуск и тестирование
- Нажмите F5, чтобы запустить приложение.
- Когда ваше приложение запущено, нажмите кнопку, чтобы увидеть «Hello, World!». сообщение.
- Закройте форму, чтобы вернуться в Visual Studio.
Создание простого приложения C # WinForms с использованием текстового редактора
- Откройте текстовый редактор (например, Блокнот) и введите код ниже:
using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; namespace SampleApp < public class MainForm : Form < private Button btnHello; // The form’s constructor: this initializes the form and its controls. public MainForm() < // Set the form’s caption, which will appear in the title bar. this.Text = «MainForm»; // Create a button control and set its properties. btnHello = new Button(); btnHello.Location = new Point(89, 12); btnHello.Name = «btnHello»; btnHello.Size = new Size(105, 30); btnHello.Text = «Say Hello»; // Wire up an event handler to the button’s «Click» event // (see the code in the btnHello_Click function below). btnHello.Click += new EventHandler(btnHello_Click); // Add the button to the form’s control collection, // so that it will appear on the form. this.Controls.Add(btnHello); >// When the button is clicked, display a message. private void btnHello_Click(object sender, EventArgs e) < MessageBox.Show(«Hello, World!»); >// This is the main entry point for the application. // All C# applications have one and only one of these methods. [STAThread] static void Main() < Application.EnableVisualStyles(); Application.Run(new MainForm()); >> >
- Сохраните файл на пути, к которому вы читали / записывали доступ. X:MainForm.cs является имя файла после класса, который он содержит, например, X:MainForm.cs .
%WINDIR%Microsoft.NETFramework64v4.0.30319csc.exe /target:winexe «X:MainForm.cs»
- После завершения компиляции приложение MainForm.exe будет создано в том же каталоге, что и ваш файл кода. Вы можете запустить это приложение либо из командной строки, либо путем двойного щелчка по нему в проводнике.
Создание простого приложения WinForms VB.NET с использованием текстового редактора
- Откройте текстовый редактор (например, Блокнот) и введите код ниже:
Imports System.ComponentModel Imports System.Drawing Imports System.Windows.Forms Namespace SampleApp Public Class MainForm : Inherits Form Private btnHello As Button ‘ The form’s constructor: this initializes the form and its controls. Public Sub New() ‘ Set the form’s caption, which will appear in the title bar. Me.Text = «MainForm» ‘ Create a button control and set its properties. btnHello = New Button() btnHello.Location = New Point(89, 12) btnHello.Name = «btnHello» btnHello.Size = New Size(105, 30) btnHello.Text = «Say Hello» ‘ Wire up an event handler to the button’s «Click» event ‘ (see the code in the btnHello_Click function below). AddHandler btnHello.Click, New EventHandler(AddressOf btnHello_Click) ‘ Add the button to the form’s control collection, ‘ so that it will appear on the form. Me.Controls.Add(btnHello) End Sub ‘ When the button is clicked, display a message. Private Sub btnHello_Click(sender As Object, e As EventArgs) MessageBox.Show(«Hello, World!») End Sub ‘ This is the main entry point for the application. ‘ All VB.NET applications have one and only one of these methods. _ Public Shared Sub Main() Application.EnableVisualStyles() Application.Run(New MainForm()) End Sub End Class End Namespace
- Сохраните файл на пути, к которому вы читали / записывали доступ. X:MainForm.vb является имя файла после класса, который он содержит, например, X:MainForm.vb .
%WINDIR%Microsoft.NETFramework64v4.0.30319vbc.exe /target:winexe «X:MainForm.vb»
- После завершения компиляции приложение MainForm.exe будет создано в том же каталоге, что и ваш файл кода. Вы можете запустить это приложение либо из командной строки, либо путем двойного щелчка по нему в проводнике.
Источник: learntutorials.net
Пример создания и вызова новой формы приложения в C#
Разработать демонстрационное приложение, осуществляющее вызов из главной формы второстепенной формы по схеме, изображенной на рис. 1. Приложение реализует взаимодействие между различными формами, которыми могут быть диалоговые окна любой сложности.
В главной форме Form1 разместить:
- элемент управления типа Label для вывода результата возврата из второстепенной формы;
- элемент управления типа Button для вызова второстепенной формы.
Во второстепенной форме Form2 разместить:
- элемент управления типа Label для вывода заголовка формы;
- два элемента управления типа Button для обеспечения подтверждения или неподтверждения выбора (действия) во второстепенной форме.
Рис. 1. Схема взаимодействия между формами
⇑
Выполнение
1. Создать приложение типа Windows Forms Application
Запустить Microsoft Visual Studio 2010 . Пример создания нового приложения типа Windows Forms Application подробно описывается здесь.
Сохранить проект в произвольной папке.
После создания приложения у нас есть одна форма. Программный код формы размещен в файле « Form1.cs » (рис. 2).
Рис. 2. Главная форма приложения Form1
⇑
2. Разработка главной формы приложения
Из палитры элементов управления Toolbox выносим на форму:
- элемент управления типа Button ;
- элемент управления типа Label .
Автоматически создаются два объекта-переменные с именами button1 и label1 .
В элементе управления типа Button свойство Text установить в значение « Show Form 2 «.
В элементе управления типа Label свойство Text установить в значение « Result = «.
После внесенных изменений главная форма Form1 приложения будет иметь вид как показано на рисунке 3.
Рис. 3. Главная форма приложения после внесенных изменений
⇑
3. Создание второстепенной формы
Для создания второстепенной формы в C# можно воспользоваться несколькими способами.
Способ 1.
Для добавления формы №2 в проект этим способом нужно вызвать команду (рис. 4)
Project -> Add Windows Form.
Рис. 4. Команда « Add Windows Form… » для добавления новой формы в проект
В результате откроется окно « Add New Item — Windows Forms Application1 «. В этом окне выбираем элемент « Windows Form » (рис. 5). Оставляем имя формы как « Form2.cs «.
Рис. 5. Окно добавления новой формы к проекту
После нажатия на кнопке « Add » новая форма будет добавлена к проекту (рис. 6).
Рис. 6. Новосозданная форма Form2 и файл « Form2.cs «
Способ 2.
Также новую форму можно добавить к проекту с помощью соответствующей команды из контекстного меню (рис. 7).
Последовательность действий следующая:
- в Solution Explorer сделать клик правой кнопкой «мышки» на названии приложения WindowsFormsApplication1 ;
- выбрать подменю Add ;
- в подменю Add выбрать команду « Windows Form… «.
Рис. 7. Добавление новой формы из Solution Explorer
В результате откроется точно такое же окно как на рисунке 5.
⇑
4. Разработка второстепенной формы
Следующим шагом есть разработка второстепенной формы. Используя средства панели инструментов Toolbox создаем второстепенную форму Form2 как показано на рисунке 8. Такое построение формы соответствует условию задачи. Таким же образом, на Form2 имеем элементы управления label1 , butto1 , button2 .
Рис. 8. Второстепенная форма Form2
⇑
5. Программирование событий клика на кнопках OK и Cancel формы Form2
Программируем событие клика на кнопке OK . Подробный пример программирования события клика на кнопке OK описывается здесь.
В программный код обработчика события button1_Click() (кнопка « OK «) вписываем следующую строку:
this.DialogResult = DialogResult.OK;
это значит, что результат возврата из формы Form2 есть « OK «.
Точно так же в обработчике события button2_Click вписываем:
this.DialogResult = DialogResult.Cancel;
это значит выбор кнопки « Cancel » ( button2 ).
После внесенных изменений листинг программного кода файла « Form2.c s» будет иметь следующий вид:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 < public partial class Form2 : Form < public Form2() < InitializeComponent(); >private void button1_Click(object sender, EventArgs e) < this.DialogResult = DialogResult.OK; > private void button2_Click(object sender, EventArgs e) < this.DialogResult = DialogResult.Cancel; > > >
Переход к программному коду формы Form2 (файл « Form2.cs «) можно осуществить с помощью Solution Explorer . Для этого в Solution Explorer вызываем контекстное меню для формы Form2 и из этого меню выбираем команду « View Code » (рис. 9).
Рис. 9. Команда « View Code » для перехода в режим программного кода
⇑
6. Вызов формы Form2 из главной формы приложения
Согласно с условием задачи, для вызова Form2 из Form1 нужно запрограммировать событие клика на кнопке « Show Form 2 «.
Программный код обработчика события будет иметь следующий вид:
. private void button1_Click(object sender, EventArgs e) < Form2 f = new Form2(); // создаем объект типа Form2 if (f.ShowDialog() == DialogResult.OK) // вызов диалогового окна формы Form2 < label1.Text = «Result = OK!»; > else < label1.Text = «Result = Cancel!»; > > .
В листинге, приведенном выше, сначала создается экземпляр класса типа Form2 . В операторе условного перехода if осуществляется вызов диалогового окна формы Form2 с помощью строки
f.ShowDialog();
Функция ShowDialog() выводит окно формы и держит его открытым до тех пор, пока пользователь не сделает какой-либо выбор. После выбора пользователем той или иной команды, окно закрывается с кодом возврата. Происходит проверка кода возврата с известными константами класса DialogResult . После проверки выводится сообщение о действии, выбранном пользователем в Form2 (элемент управления label2 ).
Листинг всего программного кода формы Form1 следующий
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 < public partial class Form1 : Form < public Form1() < InitializeComponent(); >private void button1_Click(object sender, EventArgs e) < Form2 f = new Form2(); if (f.ShowDialog() == DialogResult.OK) < label1.Text = «Result = OK!»; > else < label1.Text = «Result = Cancel!»; > > > >
⇑
7. Выполнение приложения
После выполненных действий можно выполнять приложение и исследовать его работу.
Связанные темы
- Delphi. Создание новой формы и подключение ее к главной форме программы
- C++ Builder. Пример создания и вызова новой формы из главной формы приложения
- Пример создания и вызова диалогового окна в MS Visual Studio 2010 — C++ (MFC)
Источник: www.bestprog.net
Про 2 семестр / Windows form CLR / Создание приложения в С++CLR
Чтобы создать новое приложение, выберите File–>New–>Project:
Выберите Windows Form Application, введите имя проекта и выберите Location вашего проекта, как на нижеследующем примере:
В результате получите проект с пустой формой:
Вы его уже можете скомпилировать и запустить. Для этого нужно нажать F5 или кнопку с зеленым треугольником.
Чтобы остановить запущенное приложение нажмите правый верхний крестик (как обычно) или перейдите в Visual studio и нажмите комбинацию клавиш Shift+F5.
Изменим имя приложения, которое выводится вверху. По умолчанию название Form1.
Для этого необходимо нажать кнопку Properties Window , найти поле с названием Text ввести новое название, как показано на примере:
Далее нажмите кнопку Toolbox .
Вы получите список объектов, которые можно расположить на форме. Выберите в списке объект Кнопка(Button) и перетащите его на форму.
Если запустить программу (F5) вы получите пустое приложение с кнопкой, на которую можно нажимать, но ничего происходить не будет.
Для того, чтобы добавить действие на нажатие кнопки, сначала закройте свое приложение, если оно запущено.
Затем выберите Form1(Design). Если он закрыт, сделайте даблклик в Solution Exploler (обычно он слева) по Form1.h, как показано на рисунке:
Затем сделайте даблклик по кнопке button1.
В результате будет автоматически создана функция для обработки нажатия на кнопку, и вы перейдете в режим редактирования этой функции:
Добавьте в эту функцию нижеследующий код, выделенный красным:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
Теперь запустите приложение и нажмите на кнопку. Теперь реакция на нажатие кнопки – это выход из программы.
Теперь добавьте на форму объект RichTextBox:
Этот объект обеспечивает ввод и отображение текста.
Добавьте еще одну кнопку на форму
Сделайте по ней даблклик и добавьте нижеследующий код в автоматически созданную функцию:
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
Запустите приложение. Теперь после каждого нажатия на кнопку button2 в richTextBox1 будет добавляться слово Привет:
Буква L перед “Привет ” – это макрос, трансформирующий обычную строку, состоящую из char в строку из расширенных символов wchar_t. Все объекты в Windows Form используют расширенные символы.
Теперь добавим меню в наше приложение.
Для этого выбираем в Toolbox и делаем даблклик по объекту menuStrip:
Выберите добавленный объект, в результате чего вы перейдете в режим редактирования меню:
Отредактируйте меню как показано на примере:
Сделайте даблклик по пункту меню «Выход» и добавьте Form1::Close(); ааналогично как это делали для button1:
private: System::Void выходToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)
Запустите приложение, проверьте работоспособность меню.
Добавьте из Toolbox объекты OpenFileDialog и SaveFileDialog:
Эти объекты должны появиться под формой:
Теперь перейдите в меню и сделайте даблклик по пункту «Открыть»:
Для работы с файлами будем использовать стандартные средства языка С++.
В сгенерированную функцию «открытьToolStripMenuItem_Click» добавьте следующий код, выделенный красным:
private: System::Void открытьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)
if (openFileDialog1->ShowDialog() != System::Windows::Forms::DialogResult::OK ) return;
std::string fileName = SystemStringToStdString(openFileDialog1->FileName);// преобразовании строки типа String^ в стандартную строку std::string
if (fileName.empty()) return;
std::ifstream in (fileName.c_str());
String^ systemEndStr = gcnew String(endStr);//Создаем символ конца строки
while (!in.eof() ) // читаем информацию из файл стандартными средствами языка С++
String^ myInfoDisp = gcnew String(s.c_str());// преобразовании стандартной строки std::string в строку типа String^
Также нужно добавить в начало этого файла (“Form1.h”) подключение библиотек и описание функции SystemStringToStdString:
std::string SystemStringToStdString(System::String^ str)
char* pstr = static_cast(System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str).ToPointer());
// char* stringPointer = (char*) Marshal::StringToHGlobalAnsi(the_string ).ToPointer();
const char endStr[] = ; //конец строки для textBox1
Запустите приложение. Выполните Файл->Открыть и выберите текстовый файл. Он должен отобразиться в окне:
Теперь добавим функциональность сохранения текста в файл. Закройте запущенное приложение, перейдите в редактирование меню и сделайте даблклик по пункту «Сохранить»:
В сгенерированную функцию «сохранитьToolStripMenuItem_Click» добавьте следующий код, выделенный красным:
private: System::Void сохранитьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)
if (saveFileDialog1->ShowDialog() != System::Windows::Forms::DialogResult::OK ) return;
std::string fileName = SystemStringToStdString(saveFileDialog1->FileName);
if (fileName.empty()) return;
std::ofstream out (fileName.c_str());
std::string saveText = SystemStringToStdString(richTextBox1->Text);
Запустите приложение. Наберите некоторый текст в окно. Выполните Файл->Сохранить и введите в диалоговом окне имя создаваемого файла.
Напоследок изменим название кнопок:
Выберите на форме button1 и в Properties напротив поля «Text» введите «Закрыть»:
Аналогично изменим надпись на button2:
Создание простого приложения закончено.
Пример проекта, созданного таким образом, смотрите в архиве “my_example_open_app.zip”.
Источник: studfile.net