- Работа с формами
- Основы форм
- Как добавить форму в проект (Windows Forms .NET) How to add a form to a project (Windows Forms .NET)
- Добавление новой формы Add a new form
- Добавление ссылки на проект в форму Add a project reference to a form
- BestProg
- Пример создания немодальной формы в Windows Forms приложении. Модальные и немодальные окна
- Содержание
Работа с формами
Основы форм
Внешний вид приложения является нам преимущественно через формы. Формы являются основными строительными блоками. Они предоставляют контейнер для различных элементов управления. А механизм событий позволяет элементам формы отзываться на ввод пользователя, и, таким образом, взаимодействовать с пользователем.
При открытии проекта в Visual Studio в графическом редакторе мы можем увидеть визуальную часть формы — ту часть, которую мы видим после запуска приложения и куда мы переносим элементы с панели управления. Но на самом деле форма скрывает мощный функционал, состоящий из методов, свойств, событий и прочее. Рассмотрим основные свойства форм.
Если мы запустим приложение, то нам отобразится одна пустая форма. Однако даже такой простой проект с пустой формой имеет несколько компонентов:
Несмотря на то, что мы видим только форму, но стартовой точкой входа в графическое приложение является класс Program, расположенный в файле Program.cs:
Сначала программой запускается данный класс, затем с помощью выражения Application.Run(new Form1()) он запускает форму Form1. Если вдруг мы захотим изменить стартовую форму в приложении на какую-нибудь другую, то нам надо изменить в этом выражении Form1 на соответствующий класс формы.
Сама форма сложна по содержанию. Она делится на ряд компонентов. Так, в структуре проекта есть файл Form1.Designer.cs, который выглядит примерно так:
Здесь объявляется частичный класс формы Form1, которая имеет два метода: Dispose() , который выполняет роль деструктора объекта, и InitializeComponent() , который устанавливает начальные значения свойств формы.
При добавлении элементов управления, например, кнопок, их описание также добавляется в этот файл.
Но на практике мы редко будем сталкиваться с этим классом, так как они выполняет в основном дизайнерские функции — установка свойств объектов, установка переменных.
Еще один файл — Form1.resx — хранит ресурсы формы. Как правило, ресурсы используются для создания однообразных форм сразу для нескольких языковых культур.
И более важный файл — Form1.cs, который в структуре проекта называется просто Form1, содержит код или программную логику формы:
Как добавить форму в проект (Windows Forms .NET) How to add a form to a project (Windows Forms .NET)
Добавьте формы в свой проект с помощью Visual Studio. Add forms to your project with Visual Studio. Если в приложении несколько форм, вы сможете выбрать начальную форму для приложения или одновременно отобразить несколько форм. When your app has multiple forms, you can choose which is the startup form for your app, and you can display multiple forms at the same time.
Документация для Руководства по рабочему столу по .NET 5 (и .NET Core) находится в разработке. The Desktop Guide documentation for .NET 5 (and .NET Core) is under construction.
Добавление новой формы Add a new form
Добавьте новую форму в Visual Studio. Add a new form with Visual Studio.
В Visual Studio найдите панель Обозреватель проектов. In Visual Studio, find the Project Explorer pane. Щелкните проект правой кнопкой мыши и выберите Добавить > Форма (Windows Forms) . Right-click on the project and choose Add > Form (Windows Forms).
В поле Имя введите имя формы, например MyNewForm. In the Name box, type a name for your form, such as MyNewForm. Visual Studio сформирует имя по умолчанию, которое является уникальным. Можно использовать это имя. Visual Studio will provide a default and unique name that you may use.
После добавления формы Visual Studio откроет конструктор форм для этой формы. Once the form has been added, Visual Studio opens the form designer for the form.
Добавление ссылки на проект в форму Add a project reference to a form
Если у вас есть исходные файлы для формы, можно добавить форму в проект, скопировав файлы в папку проекта. If you have the source files to a form, you can add the form to your project by copying the files into the same folder as your project. Ссылки на все файлы кода в папке проекта и в дочерних папках проекта будут автоматически добавлены в проект. The project automatically references any code files that are in the same folder or child folder of your project.
Форма включает два файла с одинаковыми именами и разными расширениями: form2.cs (form2 — пример имени файла) и form2.Designer.cs. Forms are made up of two files that share the same name: form2.cs (form2 being an example of a file name) and form2.Designer.cs. Иногда присутствует файл ресурсов с тем же именем — form2.resx. Sometimes a resource file exists, sharing the same name, form2.resx. В предыдущем примере form2 представляет собой базовое имя файла. In in the previous example, form2 represents the base file name. Необходимо скопировать все связанные файлы в папку проекта. You’ll want to copy all related files to your project folder.
Кроме того, можно использовать Visual Studio для импорта файла в проект. Alternatively, you can use Visual Studio to import a file into your project. При добавлении существующего файла в проект файл копируется в папку проекта. When you add an existing file to your project, the file is copied into the same folder as your project.
В Visual Studio найдите панель Обозреватель проектов. In Visual Studio, find the Project Explorer pane. Щелкните проект правой кнопкой мыши и выберите Добавить > Существующий элемент. Right-click on the project and choose Add > Existing Item.
Перейдите в папку, содержащую файлы формы. Navigate to the folder containing your form files.
BestProg
Пример создания немодальной формы в Windows Forms приложении. Модальные и немодальные окна
Содержание
Поиск на других ресурсах:
1. Общие сведения о модальных и немодальных формах
Любая более или менее серьезная программа использует диалоговые окна для организации интерфейса с пользователем. В графическом интерфейсе операционной системы Windows различают два вида диалоговых окон:
- модальные окна;
- немодальные окна.
Модальные окна являются наиболее распространенным видом окон. Если открыто модальное окно, то чтобы попасть в основную программу, его обязательно нужно закрыть. Без закрытия модального окна невозможно перейти в программу, которая его вызвала. В программах Windows Forms возможна ситуация, когда одно модальное окно открывает другое (следующее) модальное окно. Таким образом получается цепочка вызовов.
Как правило, модальное окно содержит кнопки типа OK, Cancel (или другие), при нажатии на которые это окно закрывается.
Примером модального окна может быть команда Open… редактора Microsoft Word, которая открывает окно выбора файла. Пока не будет выбран файл или не будет нажата одна из кнопок отмены, перейти в редактор не удастся.
При открытии немодального окна, существует возможность переключаться из окна в основную программу не закрывая это окно, и, наоборот, из основной программы можно снова вернуться в немодальное окно. Но при этом, визуально немодальное окно всегда размещается над основной программой. Как правило, немодальное окно содержит одну кнопку типа Close , которая его закрывает.
Пример немодального окна – это команда «Insert Symbol» редактора Microsoft Word, которая позволяет вставлять символ в документ. Из окна вставки символа можно переключаться в основной документ и наоборот, из документа можно переходить в немодальное окно.
2. Особенности работы с немодальными окнами в Windows Forms
В технологии Windows Forms основной программе соответствует форма – экземпляр класса, унаследованного от класса Form . Также модальному или немодальному окну соответствует некоторая форма.
При работе с немодальными окнами были замечены следующие особенности:
- в немодальном окне есть одна кнопка Close , которая его закрывает;
- вызов немодального окна из главной программы происходит с помощью метода Show() класса Form (чтобы вызвать модальное окно нужно использовать метод ShowDialog() ).
В нижеследующем коде приведены примеры вызова модального и немодального окна
Как видно из вышеприведенного кода, проблемой есть способ обмена информацией между основной программой и немодальным окном. Основной программе соответствует главная форма, немодальному окну соответствует немодальная форма.
3. Способы обмена информацией между главной формой и немодальной формой
При использовании немодальных форм важным есть обмен информацией между основной программой (главной формой) и немодальной формой.
Здесь возможны две ситуации:
- передача информации из главной формы в немодальную. Эта ситуация решается без проблем, поскольку в основной форме создается экземпляр немодальной формы. Через этот экземпляр осуществляется доступ к компонентам немодальной формы стандартным способом;
- передача информации из немодальной формы в главную форму. Здесь возникает проблема: как из немодальной формы доступиться к экземпляру главной формы.
Чтобы передать данные (информацию) с немодальной формы в главную, можно использовать один из следующих способов:
- С помощью статической ссылки на главную форму. Как известно, статические переменные есть глобальными, поэтому удобно могут использоваться для обмена информацией между разными разделенными экземплярами или процессами. Имея ссылку на главную форму, можно легко обращаться к компонентам этой формы. Этот способ наиболее прост в использовании.
- С помощью механизма событий. При этом способе в немодальной форме объявляется событие, которое возникает каждый раз, когда главной форме нужно передать информацию. Тем не менее, сам обработчик этого события помещается в главной форме. Если из немодальной формы нужно передать информацию главной форме, то возникает событие. В результате, в главной форме вызывается обработчик этого события. Этот обработчик получает объект типа «немодальное диалоговое окно», который сгенерировал событие. Имея доступ к измененному объекту немодального окна, можно обновить информацию в главной форме.
- С помощью записи информации во временный файл. Как известно, файлы подобны статическим переменным. Поэтому, записав порцию информации в файл в немодальной форме, можно ее прочитать в главной форме. Этот способ не является эффективным, поскольку работает медленнее (чтение из носителей информации происходит дольше чем из оперативной памяти).
4. Пример разработки демонстрационной программы использования немодальной формы
В данной теме описывается пример создания и использования немодальной формы. Для передачи информации из немодальной формы в главную форму используется способ использования статической ссылки на главную форму. При этом способе, перед вызовом немодальной формы запоминается значение экземпляра главной формы в статической переменной. Если нужно передать информацию из немодальной формы в главную форму, то происходит обращение к статической переменной.
Демонстрационная программа состоит из двух форм: главной и немодальной. Из главной формы вызывается немодальная форма. Из немодальной формы происходит копирование информации из поля ввода в соответствующее поле ввода главной формы.
4.1. Создать проект типа Windows Forms
После создания проекта по шаблону Windows Forms автоматически создается главная форма, экземпляр которой называется Form1 .
4.2. Разработка основной формы
Создать основную форму и разместить на ней следующие элементы управления:
- элемент управления типа Button . Создается экземпляр кнопки с именем button1 ;
- элемент управления типа Label . Создается экземпляр метки с именем label1 ;
- элемент управления типа TextBox . Создается экземпляр поля ввода с именем textBox1 .
Настроить свойства формы и элементов управления как показано на рисунке 1:
- в элементе управления Form1 свойство Text = «Main Form» (в дальнейшем Form1.Text );
- button1.Text = «Show Modeless Form» ;
- label1.Text = «Text» ;
- textBox1.Modifiers = Public . Значение Public необходимо, чтобы этот элемент управления был видим из немодальной формы.
Также нужно откорректировать размеры главной формы.
После настройки главная форма будет иметь вид как изображено на рисунке 1.
Рисунок 1. Главная форма программы
4.3. Создать новую форму Form2
Создание новой формы осуществляется стандартным способом с помощью команд
В окне, которое откроется, нужно указать шаблон «Form (Windows Forms)» . Имя файла оставить по умолчанию Form2.cs. В результате будет создан экземпляр формы с именем Form2.
4.4. Проектирование формы Form2
Разместить на форме Form2 следующие элементы управления:
- один элемент управления типа Label . Будет создан объект с именем label1 ;
- два элемента управления типа Button . Будет создано два объекта с именами button1 , button2 ;
- один элемент управления типа TextBox . Будет создан экземпляр с именем textBox1 .
Настроить следующие свойства элементов управления формы Form2 :
- Form2.Text = «Modeless Form» ;
- button1.Text = «Copy to Form1» ;
- button2.Text = «Close» ;
- label1.Text = «Text» ;
- textBox1.Modifiers = Public .
После настройки немодальная форма будет иметь вид как изображено на рисунке 2.
Рисунок 2. Немодальная форма Form2 после настройки элементов управления
4.5. Ввод статической ссылки на форму Form1
В тексте класса Form1 нужно ввести статическую переменную с именем form1:
Статическая переменная имеет тип Control . Все элементы управления унаследованы из класса Control . Это же касается и формы.
4.6. Программирование обработчика события Click элемента управления button1 формы Form1
При нажатии на кнопке button1 ( Show Modeless Form ) открывается окно немодальной формы и в поле ввода немодальной формы ( Form2.textBox1.Text ) вписывается текст из поля ввода главной формы ( Form1.textBox1.Text ).
Чтобы выполнить этот пункт сначала нужно активировать форму Form1 . Затем нужно запрограммировать событие Click элемента управления button1 , размещенного на форме Form1 .
Текст обработчика события следующий:
4.7. Программирование обработчика события Click кнопки button1 формы Form2
При нажатии на кнопке button1 ( Copy to Form1 ) текст из поля ввода немодальной формы ( Form2.textBox1.Text ) должен скопироваться в соответствующее поле ввода главной формы ( Form1.textBox1.Text ).
Сначала нужно активировать форму Form2 и сформировать обработчик события Click элемента управления button1 .
Текст обработчика события следующий:
В обработчике события на основе статической ссылки form1 происходит циклический поиск элемента управления типа TextBox с именем textBox1 (на всякий случай, если в главной форме несколько textBox-ов).
4.8. Программирование обработчика события Click элемента управления button2
При нажатии на кнопке button2 нужно закрыть немодальную форму. Текст соответствующего обработчика следующий:
Как видно из вышеприведенного кода, немодальная форма закрывается точно так же как и модальная.
4.9. Запуск программы на выполнение
После прохождения инструкции, можно запускать программу. Во время выполнения программы с помощью кнопки «Show Modeless Form» можно вызвать несколько немодальных форм из главной формы (рисунок 3). При этом из второстепенных немодальных форм можно передавать информацию в главную программу поочередно.
Рисунок 3. Случай, когда из главной формы вызваны 4 немодальных формы