Работа с формами
Основы форм
Внешний вид приложения является нам преимущественно через формы. Формы являются основными строительными блоками. Они предоставляют контейнер для различных элементов управления. А механизм событий позволяет элементам формы отзываться на ввод пользователя, и, таким образом, взаимодействовать с пользователем.
При открытии проекта в 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 применяются разные технологии — 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 Controls to Use on Windows Forms
Ниже приведен алфавитный список элементов управления и компонентов, используемых в формах Windows Forms. The following is an alphabetic list of controls and components that can be used on Windows Forms. Помимо элементов управления Windows Forms, описанных в этом разделе, в формы Windows Forms можно добавлять элементы управления ActiveX и пользовательские элементы управления. In addition to the Windows Forms controls covered in this section, you can add ActiveX and custom controls to Windows Forms. Если вам не удается найти нужный элемент управления в этом списке, вы можете создать свой собственный. If you do not find the control you need listed here, you can also create your own. См. раздел Создание элементов управления Windows Forms во время разработки. For details, see Developing Windows Forms Controls at Design Time. Дополнительные сведения о выборе необходимого элемента управления см. в разделе Функциональная классификация элементов управления Windows Forms. For more information about choosing the control you need, see Windows Forms Controls by Function.
Visual Basic элементы управления основаны на классах, предоставляемых .NET Framework. Visual Basic controls are based on classes provided by the .NET Framework.
в этом разделе In This Section
Функциональная классификация элементов управления Windows Forms Windows Forms Controls by Function
Содержит список и описание Windows Forms элементов управления на основе .NET Framework. Lists and describes Windows Forms controls based on the .NET Framework.
Элементы управления Windows Forms со встроенной поддержки рисования владельцем Controls with Built-In Owner-Drawing Support
Описание возможностей изменения аспектов внешнего вида элемента управления, которые недоступны через свойства. Describes how to alter aspects of a control’s appearance that are not available through properties.
Компонент BackgroundWorker BackgroundWorker Component
Позволяет форме или элементу управления выполнять операцию асинхронно. Enables a form or control to run an operation asynchronously.
BindingNavigator — элемент управления BindingNavigator Control
Представляет собой пользовательский интерфейс для перехода и обработки для элементов управления, которые привязываются к данным. Provides the navigation and manipulation user interface (UI) for controls that are bound to data.
Компонент BindingSource BindingSource Component
Инкапсулирует источник данных для привязки к элементам управления. Encapsulates a data source for binding to controls.
Элемент управления Button Button Control
Представляет стандартную кнопку, которую пользователь может нажать для выполнения действий. Presents a standard button that the user can click to perform actions.
Элемент управления CheckBox CheckBox Control
Указывает, включено или выключено условие. Indicates whether a condition is on or off.
Элемент управления CheckedListBox CheckedListBox Control
Отображает список элементов с флажками слева от каждого элемента. Displays a list of items with a check box next to each item.
Компонент ColorDialog ColorDialog Component
Предоставляет стандартное диалоговое окно для выбора цветов из палитры и добавления в нее дополнительных цветов. Allows the user to select a color from a palette in a pre-configured dialog box and to add custom colors to that palette.
Элемент управления ComboBox ComboBox Control
Отображает данные в раскрывающемся поле со списком. Displays data in a drop-down combo box.
Компонент ContextMenu ContextMenu Component
Предоставляет пользователям быстрый доступ к меню часто используемых команд, связанных с выбранным объектом. Provides users with an easily accessible menu of frequently used commands that are associated with the selected object. Хотя ContextMenuStrip заменяет и добавляет функциональные возможности для ContextMenu управления предыдущими версиями, ContextMenu сохраняется как для обратной совместимости, так и для будущего использования, если это необходимо. Although ContextMenuStrip replaces and adds functionality to the ContextMenu control of previous versions, ContextMenu is retained for both backward compatibility and future use if so desired.
Элемент управления ContextMenuStrip ContextMenuStrip Control
Представляет контекстное меню. Represents a shortcut menu. Хотя ContextMenuStrip заменяет и добавляет функциональные возможности для ContextMenu управления предыдущими версиями, ContextMenu сохраняется как для обратной совместимости, так и для будущего использования, если это необходимо. Although ContextMenuStrip replaces and adds functionality to the ContextMenu control of previous versions, ContextMenu is retained for both backward compatibility and future use if so desired.
Элемент управления DataGrid DataGrid Control
Отображает табличные данные из набора данных и позволяет вносить изменения в источник данных. Displays tabular data from a dataset and allows for updates to the data source.
Элемент управления DataGridView DataGridView Control
Предоставляет гибкую, расширяемую систему для отображения и редактирования табличных данных. Provides a flexible, extensible system for displaying and editing tabular data.
Элемент управления DateTimePicker DateTimePicker Control
Позволяет пользователю выбрать один элемент из списка дат или времени. Allows the user to select a single item from a list of dates or times.
Элементы управления и компоненты диалоговых окон Dialog-Box Controls and Components
Описание набора элементов управления для выполнения пользователем стандартных действий в приложении или системе. Describes a set of controls that allow users to perform standard interactions with the application or system.
Элемент управления DomainUpDown DomainUpDown Control
Отображает текстовые строки, которые пользователь может просматривать и выбирать. Displays text strings that a user can browse through and select from.
Компонент ErrorProvider ErrorProvider Component
Отображает сведения об ошибке для пользователя в фоновом режиме. Displays error information to the user in a non-intrusive way.
Класс FileDialog Предоставляет функциональные возможности базового класса для диалоговых окон файлов. FileDialog Class Provides base-class functionality for file dialog boxes.
Элемент управления FlowLayoutPanel FlowLayoutPanel Control
Представляет панель, которая динамически располагает содержимое по горизонтали или вертикали. Represents a panel that dynamically lays out its contents horizontally or vertically.
Компонент FolderBrowserDialog FolderBrowserDialog Component
Отображает интерфейс, с помощью которого пользователи могут просматривать и выбирать каталоги или создавать их. Displays an interface with which users can browse and select a directory or create a new one.
Компонент FontDialog FontDialog Component
Предоставляет приложениям шрифты, установленные в системе на текущий момент. Exposes the fonts that are currently installed on the system.
Элемент управления GroupBox GroupBox Control
Предоставляет возможность идентифицируемой группировки других элементов управления. Provides an identifiable grouping for other controls.
Компонент HelpProvider HelpProvider Component
Связывает HTML-файл справки с приложением Windows. Associates an HTML Help file with a Windows-based application.
Элементы управления HScrollBar и VScrollBar HScrollBar and VScrollBar Controls
Используются для просмотра длинных списков элементов или большого объема данных с помощью горизонтальной или вертикальной прокрутки окна приложения либо элемента управления. Provide navigation through a list of items or a large amount of information by scrolling either horizontally or vertically within an application or control.
Компонент ImageList ImageList Component
Отображает изображения на других элементах управления. Displays images on other controls.
Элемент управления Label Label Control
Отображает текст, который не может быть изменен пользователем. Displays text that cannot be edited by the user.
Элемент управления LinkLabel LinkLabel Control
Позволяет добавлять веб-ссылки в приложения Windows Forms. Allows you to add Web-style links to Windows Forms applications.
Элемент управления ListBox ListBox Control
Позволяет пользователю выбрать один или несколько элементов из заранее определенного списка. Allows the user to select one or more items from a predefined list.
Элемент управления ListView ListView Control
Отображает список элементов со значками в стиле проводника Windows. Displays a list of items with icons, in the manner of Windows Explorer.
Компонент MainMenu MainMenu Component
Отображает меню во время выполнения. Displays a menu at run time. Хотя элемент управления MenuStrip заменяет элемент управления MainMenu предыдущих версий и расширяет его функциональные возможности, однако при необходимости элемент управления MainMenu можно сохранить для обратной совместимости и использования в будущем. Although MenuStrip replaces and adds functionality to the MainMenu control of previous versions, MainMenu is retained for both backward compatibility and future use if you choose.
Элемент управления MaskedTextBox MaskedTextBox Control
Ограничивает формат вводимых пользователем данных в форме. Constrains the format of user input in a form.
Элемент управления MenuStrip MenuStrip Control
Предоставляет систему меню для формы. Provides a menu system for a form. Хотя элемент управления MenuStrip заменяет элемент управления MainMenu предыдущих версий и расширяет его функциональные возможности, однако при необходимости элемент управления MainMenu можно сохранить для обратной совместимости и использования в будущем. Although MenuStrip replaces and adds functionality to the MainMenu control of previous versions, MainMenu is retained for both backward compatibility and future use if you choose.
Элемент управления MonthCalendar MonthCalendar Control
Предоставляет интуитивно понятный графический интерфейс для пользователей для просмотра и задания сведений о дате. Presents an intuitive graphical interface for users to view and set date information.
Компонент NotifyIcon NotifyIcon Component
Отображает значки для процессов, выполняемых в фоновом режиме и не имеющих пользовательских интерфейсов. Displays icons for processes that run in the background and would not otherwise have user interfaces.
Элемент управления NumericUpDown NumericUpDown Control
Отображает числовые значения, которые пользователь может просматривать и выбирать. Displays numerals that a user can browse through and select from.
Компонент OpenFileDialog OpenFileDialog Component
Позволяет пользователям открывать файлы в стандартном диалоговом окне. Allows users to open files by using a pre-configured dialog box.
Компонент PageSetupDialog PageSetupDialog Component
Предоставляет стандартное диалоговое окно для задания параметров страницы для печати. Sets page details for printing through a pre-configured dialog box.
Элемент управления панели Panel Control
Предоставляет возможность идентифицируемой группировки других элементов управления, а также прокрутку. Provide an identifiable grouping for other controls, and allows for scrolling.
Элемент управления PictureBox PictureBox Control
Отображает рисунки в формате точечного рисунка, GIF, JPEG, метафайла или значка. Displays graphics in bitmap, GIF, JPEG, metafile, or icon format.
Компонент PrintDialog PrintDialog Component
Служит для выбора принтера, печатаемых страниц и других параметров печати. Selects a printer, chooses the pages to print, and determines other print-related settings.
Компонент PrintDocument PrintDocument Component
Задает свойства, описывающие содержимое для печати, и печатает документ в приложениях Windows. Sets the properties that describe what to print, and prints the document in Windows-based applications.
Элемент управления PrintPreviewControl PrintPreviewControl Control
Позволяет создавать собственный компонент или диалоговое окно PrintPreview , вместо использования стандартных версий. Allows you to create your own PrintPreview component or dialog box instead of using the pre-configured version.
Элемент управления PrintPreviewDialog PrintPreviewDialog Control
Выводит документ в том виде, как он будет выглядеть при печати. Displays a document as it will appear when it is printed.
Элемент управления ProgressBar ProgressBar Control
Графически показывает ход выполнения действия. Graphically indicates the progress of an action towards completion.
Элемент управления RadioButton RadioButton Control
Представляет набор из двух или более взаимоисключающих вариантов выбора для пользователя. Presents a set of two or more mutually exclusive options to the user.
Элемент управления RichTextBox RichTextBox Control
Позволяет пользователям вводить, отображать и изменять текст с форматированием. Allows users to enter, display, and manipulate text with formatting.
Компонент SaveFileDialog SaveFileDialog Component
Служит для выбора сохраняемых файлов и места их сохранения. Selects files to save and where to save them.
SoundPlayer, класс Позволяет легко включать звуки в приложения. SoundPlayer Class Enables you to easily include sounds in your applications.
Элемент управления SplitContainer SplitContainer Control
Позволяет пользователю изменять размер закрепленного элемента управления. Allows the user to resize a docked control.
Элемент управления Splitter Splitter Control
Разрешает пользователю изменять размер закрепленного элемента управления (.NET Framework версии 1. x). Allows the user to resize a docked control (.NET Framework version 1.x).
Элемент управления StatusBar StatusBar Control
Отображает сведения о состоянии элемента управления, который находится в фокусе. Displays status information related to the control that has focus. Хотя StatusStrip заменяет и расширяет элемент управления StatusBar предыдущих версий, StatusBar сохраняется для обеспечения обратной совместимости и использования в будущем при его выборе. Although StatusStrip replaces and extends the StatusBar control of previous versions, StatusBar is retained for both backward compatibility and future use if you choose.
Элемент управления StatusStrip StatusStrip Control
Предоставляет элемент управления Windows «Строка состояния». Represents a Windows status bar control. Хотя StatusStrip заменяет и расширяет элемент управления StatusBar предыдущих версий, StatusBar сохраняется для обеспечения обратной совместимости и использования в будущем при его выборе. Although StatusStrip replaces and extends the StatusBar control of previous versions, StatusBar is retained for both backward compatibility and future use if you choose.
Элемент управления TabControl TabControl Control
Отображает несколько вкладок, содержащих рисунки и другие элементы управления. Displays multiple tabs that can contain pictures or other controls.
Элемент управления TableLayoutPanel TableLayoutPanel Control
Представляет панель, в которой содержимое динамически отображается в сетке, состоящей из строк и столбцов. Represents a panel that dynamically lays out its contents in a grid composed of rows and columns.
Элемент управления TextBox TextBox Control
Позволяет пользователю вводить изменяемый текст из нескольких строк. Allows editable, multiline input from the user.
Компонент Timer Timer Component
Вызывает событие через определенные интервалы. Raises an event at regular intervals.
Элемент управления ToolBar ToolBar Control
Отображает меню и кнопки с растровыми изображениями, активирующие команды. Displays menus and bitmapped buttons that activate commands. Вы можете расширить функциональные возможности элемента управления и изменить его внешний вид и поведение. You can extend the functionality of the control and modify its appearance and behavior. Хотя элемент управления ToolStrip заменяет элемент управления ToolBar предыдущих версий и расширяет его функциональные возможности, однако при необходимости элемент управления ToolBar можно сохранить для обратной совместимости и использования в будущем. Although ToolStrip replaces and adds functionality to the ToolBar control of previous versions, ToolBar is retained for both backward compatibility and future use if you choose.
Элемент управления ToolStrip ToolStrip Control
Создает пользовательские панели инструментов и меню в приложениях Windows Forms. Creates custom toolbars and menus in your Windows Forms applications. Хотя элемент управления ToolStrip заменяет элемент управления ToolBar предыдущих версий и расширяет его функциональные возможности, однако при необходимости элемент управления ToolBar можно сохранить для обратной совместимости и использования в будущем. Although ToolStrip replaces and adds functionality to the ToolBar control of previous versions, ToolBar is retained for both backward compatibility and future use if you choose.
Элемент управления ToolStripContainer ToolStripContainer Control
Предоставляет панели на каждой стороне формы для закрепления, нависания и упорядочения ToolStrip элементов управления, а также для использования в качестве центра ToolStripContentPanel для традиционных элементов управления. Provides panels on each side of a form for docking, rafting, and arranging ToolStrip controls, and a central ToolStripContentPanel for traditional controls.
Элемент управления ToolStripPanel ToolStripPanel Control
Предоставляет одну панель для стыковки, нависания и упорядочения ToolStrip элементов управления. Provides one panel for docking, rafting and arranging ToolStrip controls.
Общие сведения об элементе управления ToolStripProgressBar ToolStripProgressBar Control Overview
Графически показывает ход выполнения действия. Graphically indicates the progress of an action towards completion. ToolStripProgressBarОбычно содержится в StatusStrip . The ToolStripProgressBar is typically contained in a StatusStrip.
Компонент ToolTip ToolTip Component
Отображает текст при наведении указателя мыши на другие элементы управления. Displays text when the user points at other controls.
Элемент управления TrackBar TrackBar Control
Служит для перемещения по большому объему данных или для визуальной настройки числовых параметров. Allows navigation through a large amount of information or visually adjusting a numeric setting.
Элемент управления TreeView TreeView Control
Отображает иерархию узлов, которые можно разворачивать и сворачивать. Displays a hierarchy of nodes that can be expanded or collapsed.
Элемент управления WebBrowser WebBrowser Control
Содержит веб-страницы и обеспечивает возможности просмотра интернет-страниц в приложении. Hosts Web pages and provides Internet Web browsing capabilities to your application.
Создание списка для выбора элементов в Windows Forms Windows Forms Controls Used to List Options
Описание набора элементов управления, используемых для предоставления пользователям списка вариантов для выбора. Describes a set of controls used to provide users with a list of options to choose from.
Связанные разделы Related Sections
Элементы управления Windows Forms Windows Forms Controls
Описание использования элементов управления Windows Forms и важных понятий для работы с ними. Explains the use of Windows Forms controls, and describes important concepts for working with them.
Создание элементов управления Windows Forms во время разработки Developing Windows Forms Controls at Design Time
Ссылки на разделы с инструкциями, рекомендации по выбору создаваемого элемента управления, а также другие сведения о создании собственных элементов управления. Provides links to step-by-step topics, recommendations for which kind of control to create, and other information about creating your own control.
Сравнение элементов управления и программируемых объектов в разных языках и библиотеках Controls and Programmable Objects Compared in Various Languages and Libraries
Предоставляет таблицу, которая сопоставляет элементы управления в Visual Basic 6,0 с соответствующим элементом управления в Visual Basic .NET. Provides a table that maps controls in Visual Basic 6.0 to the corresponding control in Visual Basic .NET. Обратите внимание, что элементы управления теперь являются классами в .NET Framework. Note that controls are now classes in the .NET Framework.
Практическое руководство. Добавление элементов управления ActiveX в формы Windows Forms. How to: Add ActiveX Controls to Windows Forms
В этой статье описывается использование элементов управления ActiveX в формах Windows Forms. Describes how to use ActiveX controls on Windows Forms.