- Введение в Windows Forms
- Создание графического приложения
- Запуск приложения
- Руководство. Создание элементов управления для Windows Forms How to: Author controls for Windows Forms
- Создание элемента управления To author a control
- Программное добавление элементов управления в Windows Forms во время выполнения с помощью Visual C#
- Сводка
- Требования
- Создание приложения Windows Forms
- Настройка свойств формы и элемента управления
- Добавление элементов управления в форму
- Проверка работы
- Ссылки
- Создание Windows Forms элемента управления панели элементов Create a Windows Forms Toolbox Control
- Предварительные требования Prerequisites
- Создание элемента управления панели элементов Create the Toolbox Control
- Создание расширения с помощью Windows Forms элемента управления панели элементов Create an extension with a Windows Forms Toolbox Control
- Создание пользовательского интерфейса для элемента управления Build a user interface for the control
- Создание пользовательского интерфейса To build the user interface
- Код пользовательского элемента управления Code the user control
- Код пользовательского элемента управления To code the user control
- Тестирование элемента управления Test the control
- Тестирование элемента управления To test the control
Введение в Windows Forms
Для создания графических интерфейсов с помощью платформы .NET применяются разные технологии — Window Forms, WPF, приложения для магазина Windows Store (для ОС Windows 8/8.1/10). Однако наиболее простой и удобной платформой до сих пор остается Window Forms или формы. Данное руководство ставит своей целью дать понимание принципов создания графических интерфейсов с помощью технологии WinForms и работы основных элементов управления.
Создание графического приложения
Для создания графического проекта нам потребуется среда разработки Visual Studio. Поскольку наиболее распространенная пока версия Visual Studio 2013, то для данного руководства я буду использовать бесплатную версию данной среды Visual Studio Community 2013 которую можно найти на странице https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx.
После установки среды и всех ее компонентов, запустим Visual Studio и создадим проект графического приложения. Для этого в меню выберем пункт File (Файл) и в подменю выберем New — > Project (Создать — > Проект). После этого перед нами откроется диалоговое окно создания нового проекта:
В левой колонке выберем Windows Desktop , а в центральной части среди типов проектов — тип Windows Forms Application и дадим ему какое-нибудь имя в поле внизу. Например, назовем его HelloApp. После этого нажимаем OK.
После этого Visual Studio откроет наш проект с созданными по умолчанию файлами:
Большую часть пространства Visual Studio занимает графический дизайнер, который содержит форму будущего приложения. Пока она пуста и имеет только заголовок Form1. Справа находится окно файлов решения/проекта — Solution Explorer (Обозреватель решений). Там и находятся все связанные с нашим приложением файлы, в том числе файлы формы Form1.cs.
Внизу справа находится окно свойств — Properties. Так как у меня в данный момент выбрана форма как элемент управления, то в этом поле отображаются свойства, связанные с формой.
Теперь найдем в этом окне свойство формы Text и изменим его значение на любое другое:
Таким образом мы поменяли заголовок формы. Теперь перенесем на поле какой-нибудь элемент управления, например, кнопку. Для этого найдем в левой части Visual Studio вкладку Toolbox (Панель инструментов) . Нажмем на эту вкладку, и у нас откроется панель с элементами, откуда мы можем с помощью мыши перенести на форму любой элемент:
Найдем среди элементов кнопку и, захватив ее указателем мыши, перенесем на форму:
Это визуальная часть. Теперь приступим к самому программированию. Добавим простейший код на языке C#, который бы выводил сообщение по нажатию кнопки. Для этого мы должны перейти в файл кода, который связан с этой формой. Если у нас не открыт файл кода, мы можем нажать на форму правой кнопкой мыши и в появившемся меню выбрать View Code (Посмотреть файл кода):
Однако воспользуемся другим способом, чтобы не писать много лишнего кода. Наведем указатель мыши на кнопку и щелкнем по ней двойным щелчком. Мы автоматически попадаем в файл кода Form1.cs, который выглядит так:
Добавим вывод сообщения по нажатию кнопки, изменив код следующим образом:
Запуск приложения
Чтобы запустить приложение в режиме отладки, нажмем на клавишу F5 или на зеленую стрелочку на панели Visual Studio. После этого запустится наша форма с одинокой кнопкой. И если мы нажмем на кнопку на форме, то нам будет отображено сообщение с приветствием.
После запуска приложения студия компилирует его в файл с расширением exe. Найти данный файл можно, зайдя в папку проекта и далее в каталог bin/Debug или bin/Release
Рассмотрев вкратце создание проекта графического приложения, мы можем перейти к обзору основных компонентов и начнем мы с форм.
Руководство. Создание элементов управления для Windows Forms How to: Author controls for Windows Forms
Элемент управления выполняет роль визуальной связи между пользователем и программой. A control represents a graphical link between the user and the program. Он может предоставлять или обрабатывать данные, принимать входные данные пользователя, реагировать на события или выполнять любые другие функции, устанавливающие связь между пользователем и приложением. A control can provide or process data, accept user input, respond to events, or perform any number of other functions that connect the user and the application. Поскольку элемент управления — это по сути компонент с графическим интерфейсом, он может выполнять любую функцию компонента и в то же время обеспечивать взаимодействие с пользователем. Because a control is essentially a component with a graphical interface, it can serve any function that a component does, as well as provide user interaction. Элементы управления создаются для конкретных целей, и процесс их создания входит в процесс программирования. Controls are created to serve specific purposes, and authoring controls is just another programming task. Ниже описан процесс создания элемента управления с учетом всего вышесказанного. With that in mind, the following steps represent an overview of the control authoring process. Ссылки указывают на дополнительные сведения об отдельных этапах. Links provide additional information on the individual steps.
Создание элемента управления To author a control
Определите, какую функцию или роль ваш элемент управления должен выполнять в приложении. Determine what you want your control to accomplish, or what part it will play in your application. При этом необходимо учитывать следующие факторы. Factors to consider are:
Какого рода графический интерфейс вам требуется? What kind of graphical interface do you need?
Какие взаимодействия с пользователем будет обрабатывать этот элемент управления? What specific user interactions will this control handle?
Обладают ли необходимыми функциональными возможностями какие-либо из существующих элементов управления? Is the functionality you need provided by any existing controls?
Можно ли получить необходимую функциональную возможность, объединив несколько элементов управления Windows Forms? Can you get the functionality you need by combining several Windows Forms controls?
Если для элемента управления требуется объектная модель, определите, каким образом функциональные возможности будут распределяться по объектной модели, и разделите их между элементом управления и подчиненными объектами. If you need an object model for your control, determine how functionality will be distributed throughout the object model, and divide up functionality between the control and any subobjects. Объектная модель может пригодиться при планировании сложного элемента управления, а также в случае, если вам требуется внедрить сразу несколько функциональных возможностей. An object model may be useful if you are planning a complex control, or want to incorporate several functionalities.
Определите необходимый тип элемента управления (например, пользовательский элемент управления, настраиваемый элемент управления, наследуемый элемент управления Windows Forms). Determine the type of control (for example, user control, custom control, inherited Windows Forms control) you need. Дополнительные сведения см. в разделах Рекомендации относительно типов элементов управления и Разновидности пользовательских элементов управления. For details, see Control Type Recommendations and Varieties of Custom Controls.
Представьте функции в качестве свойств, методов и событий элемента управления и его подчиненных объектов или вспомогательных структур и назначьте соответствующие уровни доступа (например, public, protected и т. д.). Express functionality as properties, methods, and events of the control and its subobjects or subsidiary structures, and assign appropriate access levels (for example, public, protected, and so on).
Если для элемента управления необходима пользовательская отрисовка, добавьте соответствующий код. If you need custom painting for your control, add code for it. Дополнительные сведения см. в разделе Рисование и отрисовка пользовательского элемента управления. For details, see Custom Control Painting and Rendering.
Если элемент управления наследуется от UserControl , можно проверить его поведение во время выполнения, создав проект элемента управления и запустив его в тестовом контейнере UserControl. If your control inherits from UserControl, you can test its runtime behavior by building the control project and running it in the UserControl Test Container. Дополнительные сведения см. в разделе как проверить поведение Run-Time UserControl. For more information, see How to: Test the Run-Time Behavior of a UserControl.
Кроме того, для тестирования и отладки элемента управления можно создать новый проект, например приложение Windows, и поместив его в контейнер. You can also test and debug your control by creating a new project, such as a Windows Application, and placing it into a container. Этот процесс демонстрируется как часть пошагового руководства. Создание составного элемента управления. This process is demonstrated as part of Walkthrough: Authoring a Composite Control.
При добавлении каждой функции добавляйте ее в тестовый проект для реализации новых функциональных возможностей. As you add each feature, add features to your test project to exercise the new functionality.
Повторите эти действия, добавив необходимые уточнения. Repeat, refining the design.
Упакуйте и разверните элемент управления. Package and deploy your control. Дополнительные сведения см. в разделе первое знакомство с развертыванием в Visual Studio. For details, see First look at deployment in Visual Studio.
Программное добавление элементов управления в Windows Forms во время выполнения с помощью Visual C#
Эта статья поможет программным способом добавлять и настраивать элементы управления в форме Windows Forms с помощью Visual C#.
Исходная версия продукта: Visual C #
Исходный номер статьи базы знаний: 319266
Сводка
В этой статье приведены пошаговые инструкции по добавлению и настройке нескольких часто используемых элементов управления в форме Windows Forms. В примере кода отсутствует обработка событий.
Пакет средств разработки программного обеспечения (SDK) Microsoft .NET Framework предоставляет множество визуальных элементов управления, которые можно использовать для создания приложения Windows Forms. Вы можете добавлять и настраивать элементы управления во время конструирования в Visual Studio .NET или в Visual Studio. Вы можете добавлять и настраивать элементы управления программным способом во время выполнения.
Требования
В этой статье предполагается, что вы знакомы со следующими разделами:
- Синтаксис Visual C#
- Среда Visual Studio .NET, среда Visual Studio
- Назначение распространенных элементов управления Visual C#
Создание приложения Windows Forms
Запустите Visual Studio .NET или Visual Studio и создайте новый проект приложения Visual C# для Windows с именем винконтролс. По умолчанию форма Form1 добавляется в проект.
Дважды щелкните Form1, чтобы создать и просмотреть Form1_Load процедуру обработки события.
Добавьте в класс переменные частных экземпляров Form1 для работы с общими элементами управления Windows. Form1 Класс запускается следующим образом:
Код должен быть изменен в Visual Studio. Когда вы создаете проект Windows Forms, Visual C# добавляет по умолчанию одну форму в проект. Эта форма называется Form1. Два файла, представляющие форму, называются Form1.CS и Form1.Designer.CS. Вы пишете свой код в Form1.CS. Файл Designer.CS — это место, в котором конструктор Windows Forms записывает код, который реализует все действия, выполненные путем добавления элементов управления. Дополнительные сведения о конструкторе Windows Forms в Visual C# приведены в статье Создание проекта (Visual c#).
Настройка свойств формы и элемента управления
Нахождение Form1_Load процедуры обработки события и добавление в процедуру следующего кода для настройки внешнего вида элемента управления формы:
Добавьте следующий код в Form1_Load процедуру обработки события для настройки внешнего вида элемента управления «Кнопка»:
Добавьте следующий код для настройки внешнего вида элемента управления TextBox в Form1_Load :
Добавьте следующий код для настройки внешнего вида элемента управления ListBox в Form1_Load :
Добавьте следующий код, чтобы настроить внешний вид элемента управления CheckBox в Form1_Load :
Добавьте следующий код, чтобы настроить внешний вид элемента управления Label в Form1_Load :
Добавление элементов управления в форму
Добавьте следующий код, чтобы добавить каждый объект в Controls массив формы в конце Form1_Load :
Проверка работы
Чтобы убедиться, что пример работает, выберите команду начать в меню Отладка .
- Хотя отображаются форма и элементы управления, в настоящее время они не выполняют никаких действий, так как вы не записали обработчики событий.
- Помните, что позиции этих элементов управления являются статическими. Чтобы сделать их более надежными при растяжении формы, сделайте точки динамическими относительно положения формы. Если элементы управления статичны, растягивание формы может помешать отображению других элементов управления в форме.
Ссылки
Дополнительные сведения об использовании элементов управления программным способом можно найти в разделе приложения Windows в разделе Visual C# справочной документации по Visual Studio .NET Online или в справочной документации по Visual Studio Online.
Создание Windows Forms элемента управления панели элементов Create a Windows Forms Toolbox Control
Шаблон элемента элемента управления панели элементов Windows Forms, включенный в средства расширения Visual Studio (пакет VS SDK), позволяет создать элемент управления панели элементов , который автоматически добавляется при установке расширения. The Windows Forms Toolbox Control item template that is included in the Visual Studio Extensibility Tools (VS SDK), lets you create a Toolbox control that is automatically added when the extension is installed. В этом пошаговом руководстве показано, как использовать шаблон для создания простого элемента управления счетчика, который можно распространить другим пользователям. This walkthrough shows how to use the template to create a simple counter control that you can distribute to other users.
Предварительные требования Prerequisites
Начиная с Visual Studio 2015, пакет SDK для Visual Studio не устанавливается из центра загрузки. Starting in Visual Studio 2015, you do not install the Visual Studio SDK from the download center. Он входит в состав программы установки Visual Studio как дополнительный компонент. It is included as an optional feature in Visual Studio setup. Пакет SDK для VS можно установить и позже. You can also install the VS SDK later on. Дополнительные сведения см. в статье Установка пакета SDK для Visual Studio. For more information, see Install the Visual Studio SDK.
Создание элемента управления панели элементов Create the Toolbox Control
Шаблон элемента управления панели элементов Windows Forms создает неопределенный пользовательский элемент управления и предоставляет все функциональные возможности, необходимые для добавления элемента управления на панель элементов. The Windows Forms Toolbox Control template creates an undefined user control and provides all of the functionality that is required to add the control to the Toolbox.
Создание расширения с помощью Windows Forms элемента управления панели элементов Create an extension with a Windows Forms Toolbox Control
Создайте проект VSIX с именем MyWinFormsControl . Create a VSIX project named MyWinFormsControl . Шаблон проекта VSIX можно найти в диалоговом окне » Новый проект «, выполнив поиск по слову «VSIX». You can find the VSIX project template in the New Project dialog, by searching for «vsix».
После открытия проекта добавьте Windows Forms шаблон элемента элемента управления панели элементов с именем Counter . When the project opens, add a Windows Forms Toolbox Control item template named Counter . В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите команду Добавить > новый элемент. In the Solution Explorer, right-click the project node and select Add > New Item. В диалоговом окне Добавление нового элемента перейдите в раздел расширяемость Visual C# > и выберите Windows Forms элемент управления панели элементов . In the Add New Item dialog, go to Visual C# > Extensibility and select Windows Forms Toolbox Control
При этом добавляется пользовательский элемент управления, ProvideToolboxControlAttribute RegistrationAttribute для размещения элемента управления в панели элементов, а также запись ресурса Microsoft. VisualStudio. тулбоксконтрол в манифесте VSIX для развертывания. This adds a user control, a ProvideToolboxControlAttribute RegistrationAttribute to place the control in the Toolbox, and a Microsoft.VisualStudio.ToolboxControl Asset entry in the VSIX manifest for deployment.
Создание пользовательского интерфейса для элемента управления Build a user interface for the control
Counter Элементу управления требуются два дочерних элемента управления: Label для вывода текущего счетчика и Button для сброса счетчика в значение 0. The Counter control requires two child controls: a Label to display the current count, and a Button to reset the count to 0. Другие дочерние элементы управления не требуются, так как вызывающие объекты увеличивают счетчик программным образом. No other child controls are required because callers will increment the counter programmatically.
Создание пользовательского интерфейса To build the user interface
В Обозреватель решений дважды щелкните Counter. CS , чтобы открыть его в конструкторе. In Solution Explorer, double-click Counter.cs to open it in the designer.
Удалите щелчком мыши. Remove the Click Here ! , которая включается по умолчанию при добавлении шаблона элемента элемента управления панели элементов Windows Forms. button that is included by default when you add the Windows Forms Toolbox Control item template.
Перетащите элемент управления с панели элементов, Label а затем Button элемент управления под ним в область конструктора. From the Toolbox, drag a Label control and then a Button control below it to the design surface.
Измените размер элемента управления «общий» на 150, 50 пикселей и измените размер элемента управления «Кнопка» на 50, 20 пикселей. Resize the overall user control to 150, 50 pixels, and resize the button control to 50, 20 pixels.
В окне Свойства задайте следующие значения для элементов управления в области конструктора. In the Properties window, set the following values for the controls on the design surface.
Control Control | Property (Свойство) Property | Значение Value |
---|---|---|
Label1 | TextText | «» «» |
Button1 | имя; Name | бтнресет btnReset |
Button1 | TextText | Reset Reset |
Код пользовательского элемента управления Code the user control
Counter Элемент управления предоставит метод для увеличения счетчика, событие, которое будет выдаваться при каждом увеличении счетчика, кнопку сброса и три свойства для хранения текущего числа, отображаемого текста, а также для отображения или скрытия кнопки сброса . The Counter control will expose a method to increment the counter, an event to be raised whenever the counter is incremented, a Reset button, and three properties to store the current count, the display text, and whether to show or hide the Reset button. Атрибут ProvideToolboxControl определяет место на панели элементов , в котором будет отображаться элемент управления Counter . The ProvideToolboxControl attribute determines where in the Toolbox the Counter control will appear.
Код пользовательского элемента управления To code the user control
Дважды щелкните форму, чтобы открыть обработчик событий Load в окне кода. Double-click the form to open its load event handler in the code window.
Над методом обработчика событий в классе Control создайте целое число, чтобы сохранить значение счетчика, и строку для хранения отображаемого текста, как показано в следующем примере. Above the event handler method, in the control class create an integer to store the counter value and a string to store the display text as shown in the following example.
Создайте следующие открытые объявления свойств. Create the following public property declarations.
Вызывающие объекты могут получить доступ к этим свойствам для получения и задания отображаемого текста счетчика, а также для отображения или скрытия кнопки Сброс . Callers can access these properties to get and set the display text of the counter and to show or hide the Reset button. Вызывающие объекты могут получить текущее значение свойства только для чтения Value , но не могут задавать значение напрямую. Callers can obtain the current value of the read-only Value property, but they cannot set the value directly.
Добавьте следующий код в Load событие для элемента управления. Put the following code in the Load event for the control.
Задание текста метки в Load событии позволяет загружать целевые свойства до применения их значений. Setting the Label text in the Load event enables the target properties to load before their values are applied. Установка текста метки в конструкторе приведет к пустой метке. Setting the Label text in the constructor would result in an empty Label.
Создайте следующий открытый метод для увеличения счетчика. Create the following public method to increment the counter.
Добавьте объявление Incremented события в класс Control. Add a declaration for the Incremented event to the control class.
Вызывающие объекты могут добавлять обработчики в это событие для реагирования на изменения значения счетчика. Callers can add handlers to this event to respond to changes in the value of the counter.
Вернитесь в режим конструктора и дважды щелкните кнопку Сброс , чтобы создать btnReset_Click обработчик событий. Return to design view and double-click the Reset button to generate the btnReset_Click event handler. Затем заполните его, как показано в следующем примере. Then, fill it in as shown in the following example.
Непосредственно над определением класса в объявлении атрибута ProvideToolboxControl измените значение первого параметра с «MyWinFormsControl.Counter» на «General» . Immediately above the class definition, in the ProvideToolboxControl attribute declaration, change the value of the first parameter from «MyWinFormsControl.Counter» to «General» . Таким образом задается имя группы элементов, в которой будет размещаться элемент управления на панели элементов. This sets the name of the item group that will host the control in the Toolbox.
В приведенном ниже примере показаны атрибут ProvideToolboxControl и скорректированное определение класса. The following example shows the ProvideToolboxControl attribute and the adjusted class definition.
Тестирование элемента управления Test the control
Чтобы протестировать элемент управления панели элементов , сначала протестируйте его в среде разработки, а затем протестируйте в скомпилированном приложении. To test a Toolbox control, first test it in the development environment and then test it in a compiled application.
Тестирование элемента управления To test the control
Нажмите клавишу F5 , чтобы начать отладку. Press F5 to Start Debugging.
Эта команда выполняет сборку проекта и открывает второй экспериментальный экземпляр Visual Studio с установленным элементом управления. This command builds the project and opens a second Experimental instance of Visual Studio that has the control installed.
В экспериментальном экземпляре Visual Studio создайте проект приложения Windows Forms . In the Experimental instance of Visual Studio, create a Windows Forms Application project.
В Обозреватель решений дважды щелкните Form1. CS , чтобы открыть его в конструкторе, если он еще не открыт. In Solution Explorer, double-click Form1.cs to open it in the designer if it is not already open.
На панели элементов Counter элемент управления должен отображаться в разделе Общие . In the Toolbox, the Counter control should be displayed in the General section.
Перетащите Counter элемент управления в форму, а затем выберите его. Drag a Counter control to your form, and then select it. Value Свойства, Message и ShowReset будут отображаться в окне Свойства вместе со свойствами, унаследованными от UserControl . The Value , Message , and ShowReset properties will be displayed in the Properties window, together with the properties that are inherited from UserControl.
Задайте для свойства Message значение Count: . Set the Message property to Count: .
Перетащите Button элемент управления в форму, а затем задайте для свойства Name и Text кнопки значение Test . Drag a Button control to the form, and then set the name and text properties of the button to Test .
Дважды щелкните кнопку, чтобы открыть форму Form1. CS в представлении кода и создать обработчик щелчка. Double-click the button to open Form1.cs in code view and create a click handler.
В обработчике щелчка вызовите counter1.Increment() . In the click handler, call counter1.Increment() .
В функции конструктора после вызова InitializeComponent Введите, counter1«.«Incremented += а затем дважды нажмите клавишу Tab . In the constructor function, after the call to InitializeComponent , type counter1«.«Incremented += and then press Tab twice.
Visual Studio создает обработчик на уровне формы для counter1.Incremented события. Visual Studio generates a form-level handler for the counter1.Incremented event.
Выделите Throw оператор в обработчике событий, введите mbox , а затем дважды нажмите клавишу Tab , чтобы создать окно сообщения из фрагмента кода Mbox. Highlight the Throw statement in the event handler, type mbox , and then press Tab twice to generate a message box from the mbox code snippet.
На следующей строке добавьте следующий if / else блок, чтобы задать видимость кнопки сброса . On the next line, add the following if / else block to set the visibility of the Reset button.
Нажмите клавишу F5. Press F5.
Откроется форма. The form opens. Counter Элемент управления отображает следующий текст. The Counter control displays the following text.
Число: 0 Count: 0
Выберите Тест. Select Test.
Счетчик увеличивается, и Visual Studio отображает окно сообщения. The counter increments and Visual Studio displays a message box.
Закройте окно сообщения. Close the message box.
Кнопка сброса исчезнет. The Reset button disappears.
Выберите тест , пока счетчик не достигнет 5 -закрывающих окон сообщений каждый раз. Select Test until the counter reaches 5 closing the message boxes each time.
Появится кнопка Сброс . The Reset button reappears.
Выберите Сброс. Select Reset.
Счетчик сбрасывается в значение 0. The counter resets to 0.