Обзор основных элементов Windows Forms и их свойств Содержание 1 Создание проекта Windows forms С++ в среде Microsoft Visual Studio 2013. 2 2 Обзор основных элементов Windows Forms и их свойств 16 2.1 Элемент Form.. 17 2.2 Элемент Button. 19 2.3 Элемент TextBox. 20 2.4 Элемент RichTextBox. 21 2.5 Элемент Label 23 2.6 Элемент RadioButton. 24 2.7 Элемент CheckBox. 25 2.8 Элемент numericUpDown. 27 2.9 Элемент DataGridView.. 28 2.10 Элемент Chart 30 2.11 Элемент GroupBox. 31 2.12 Полезные классы и методы.. 32 3 Примеры решения типовых задач. 34 3.1 Работа с матрицами. 34 3.2 Построение графика функции. 38 1 Создание проекта Windows forms С++ в среде Microsoft Visual Studio 2013 Windows Forms ‑ интерфейс программирования приложений (API), отвечающий за графический интерфейс пользователя и являющийся частью Microsoft .NET Framework. Данный интерфейс упрощает доступ к элементам интерфейса Microsoft Windows за счет создания обёртки для существующего Win32 API в управляемом коде. Причем управляемый код ‑ классы, реализующие API для Windows Forms, не зависят от языка разработки. То есть программист одинаково может использовать Windows Forms как при написании ПО на C#, С++, так и на VB.Net, J# и др. Для создания проекта Windows Forms С++ в среде Microsoft Visual Studio 2013 выполните File>New>Project… (рисунок 1.1).  Рисунок 1.1 – Создание нового проекта В открывшемся окне выберите CLR Empty Project (рисунок 1.2). Дайте имя проекту и укажите директорию, где он будет храниться (рисунок 1.3).  Рисунок 1.2  Рисунок 1.3 Нажмите кнопку ОК, после чего вы должны будете увидеть только что созданный пустой проект (рисунок 1.4).  Рисунок 1.4 – Пустой проект После этого выполните Project>Add New Item… (рисунок 1.5)  Рисунок 1.5 И в открывшемся окне выберите во вкладке слева Installed>Visual C++>UI>Windows Forms (рисунок 1.6).  Рисунок 1.6 – Добавление компонента Windows Forms в проект Проект должен иметь вид, показанный на рисунке 1.7.  Рисунок 1.7 – Дизайнер проекта После этого на панели слева (вкладка Solution Explorer или Class View(рисунок 1.8)) вызовите контекстное меню, кликнув правой кнопкой мыши по имени проекта, и выберите Properties (рисунок 1.9).  Рисунок 1.8 ‑ Solution Explorer  Рисунок 1.9 В открывшемся окне выполните: Linker>System>SubSystem> Windows(/SUBSYSTEM:WINDOWS) (рисунок 1.10).  Рисунок 1.10 Перейдите на Linker>Advanced>Entry Point и задайте имя точки входа в приложение (главной функции) (рисунок 1.11).  Рисунок 1.11 – Установка точки входа в приложение После этого перейдите в Solution Explorer и откройте главный исходный файл Windows Forms компонента, который мы добавили ранее (MyForm.cpp по умолчанию). Открыть файл можно двойным кликом по нему (рисунок 1.12)  Рисунок 1.12 Вставьте в файл следующий код (рисунок 1.13). using namespace System; using namespace System::Windows::Forms; [STAThread] void main(array<String^>^ arg) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); test_project::MyForm form; //нужно указать имя своего проекта (а не test_project) Application::Run(%form); } Обратите внимание на то, что test_project имя проекта данное нами в самом начале.  Рисунок 1.13 После этого можно запустить наш проект на выполнение (клавиша f5 по умолчанию). Результат на рисунке 1.14.  Рисунок 1.14 – Пустой проект Windows Forms Для добавления и использования в нашем проекте дополнительных файлов (для разделения интерфейсной и логической частей, например) воспользуемся Solution Explorer-ом. Выполните Header Files>Add>New Item… (рисунок 1.15) и выберите Installed>Visual C++>Code>Header File(.h) и дайте имя добавляемому файлу (рисунок 1.16).  Рисунок 1.15  Рисунок 1.16 После этого файл станет частью проекта (рисунок 1.17). Аналогично можно добавлять и *.cpp файлы, в этом случае вместо Header Files, стоит выбрать Source Files.  Рисунок 1.17 Для работы с добавленными заглавными файлами, их нужно подключить в заглавный файл проекта. Открыть заглавный файл проекта можно, вызвав контекстное меню на дизайнере проекта и выбрав пункт View Code (рисунок 1.18), после чего в самом верху подключить наш заглавный файл (рисунок 1.19), например, так: #include "Header.h".  Рисунок 1.18  Рисунок 1.19 Подключить данный заглавный файл нужно также в *.cpp файл, который предположительно предписан этому заглавному файлу. Для работы с дизайнером Windows Forms нам потребуются панели Properties и Tool Box, обычно расположены справа от дизайнера (рисунок 1.20).  Рисунок 1.20 – панели Properties и Tool Box Если они отсутствуют, то их можно вызвать, выполнив View>Tool Box для Tool Box (рисунок 1.21) и View>Other Windows> Properties Window для Properties (рисунок 1.22).  Рисунок 1.21  Рисунок 1.22 Обзор основных элементов Windows Forms и их свойств Windows Forms предоставляет широкий спектр элементов, которые условно можно разделить на два типа: интерфейсные – те которые видны пользователю и с которыми он может работать непосредственно (разного рода кнопки, панели, таблицы) и служебные – те, что выполняют определенные задачи и вызываются путем взаимодействия пользователя с интерфейсными элементами (диалоги, таймеры, адаптеры). Перед использованием элемент должен быть помещен на форму (обычно при помощи drag&drop или как его называют «перетаскивание»), за исключением самого элемента формы (элемент форма создается автоматически при создании проекта см. раздел 1). Все элементы Windows Forms находятся на панели Toolbox (рисунок 2.1).  Рисунок 2.1 – Панель элементов (Toolbox) Каждый элемент содержит свой набор свойств и событий. Большинство из них повторяются для всех элементов (являются универсальными). Свойствов объектно-ориентированном программировании ‑ способ доступа к внутреннему состоянию объекта, имитирующий переменную некоторого типа. Событие в объектно-ориентированном программировании — это сообщение, которое возникает в различных точках исполняемого кода при выполнении определённых условий. События предназначены для того, чтобы иметь возможность предусмотреть реакцию программного обеспечения. Все свойства элемента находятся на панели Properties и меняются вручную или выбираются из списка (рисунок 2.2), а события на панели Properties, вкладка Events (рисунок 2.3).  |  | Рисунок 2.2 – Свойства элемента Form | Рисунок 2.3 – События элемента Form | Элемент Form Представляет окно или диалоговое окно, которое составляет пользовательский интерфейс приложения (рисунок 2.4).  Рисунок 2.4 – Элемент Form Основные свойства (таблица 2.1). Таблица 2.1 – Основные свойства элемента Form Название | Описание | Text | Пользовательское название формы | Visible | Получает или задает значение, указывающее, отображается ли элемент управления и все его дочерние элементы управления. | WindowState | Возвращает или задаёт значение, указывающее на состояние формы: развёрнутое, свернутое или обычное. | FormBorderStyle | Получает или задает стиль границы формы. Может принимать значения: None – форма не имеет границ; FixedSingle – обычная форма без возможности масштабирования; Sizable – обычная форма с возможностью масштабирования. | MinimizeBox | Возвращает или задает значение, указывающее, отображается ли кнопка свертывания в строке заголовка формы. | MaximizeBox | Возвращает или задает значение, указывающее, отображается ли кнопка развертывания в строке заголовка формы. | Основные события (таблица 2.2). Таблица 2.2 – Основные события элемента Form Название | Описание | Click | Происходит при щелчке элемента управления. | Load | Происходит до первоначального отображения формы. | Элемент Button Представляет элемент управления Windows "Кнопка". Находится в группе элементов Common Controls (рисунок 2.5).  Рисунок 2.5 – Элемент Button Основные свойства (таблица 2.3). Таблица 2.3 – Основные свойства элемента Button Название | Описание | Text | Получает или задает текст, сопоставленный с этим элементом управления. | TextAlign | Получает или задает выравнивание текста в элементе управления " Кнопка ". | Image | Возвращает или задаёт изображение, отображаемое на элементе управления "Кнопка". | Visible | Получает или задает значение, указывающее, отображается ли элемент управления. | Enabled | Возвращает или задает значение, показывающее, сможет ли элемент управления отвечать на действия пользователя. | Name | Возвращает или задает имя элемента управления. Стандарты те же что и для переменных С++. | Основные события (таблица 2.4). Таблица 2.4 – Основные события элемента Button Название | Описание | Click | Происходит при щелчке элемента управления. | DoubleClick | Происходит при двойном щелчке мышью элемента управления Button. | Элемент TextBox Отображает элемент управления текстовым окном для ввода данных пользователем. Находится в группе элементов Common Controls (рисунок 2.6).  Рисунок 2.6 – Элемент TextBox Основные свойства (таблица 2.5). Таблица 2.5 – Основные свойства элемента TextBox Название | Описание | Text | Получает или задает текст, сопоставленный с этим элементом управления. | TextAlign | Получает или задает выравнивание текста в элементе управления TextBox. | MaxLength | Получает или задает максимальное разрешенное число знаков в текстовом окне (по умолчанию 32767 символов). | Multiline | Определяет поддерживает ли элемент многострочный текст. | Enabled | Возвращает или задает значение, показывающее, сможет ли элемент управления отвечать на действия пользователя. | Name | Возвращает или задает имя элемента управления. Стандарты те же что и для переменных С++. | Visible | Получает или задает значение, указывающее, отображается ли элемент управления. | ReadOnly | Возвращает или задает значение, определяющее возможность изменения содержимого элемента управления TextBox. | Rows | Возвращает или задает число строк, отображаемых в многострочном текстовом окне. | Columns | Возвращает или задает ширину отображаемого текстового окна в знаках. | Основные события (таблица 2.6). Таблица 2.6 – Основные события элемента TextBox Название | Описание | Click | Происходит при щелчке элемента управления. | DoubleClick | Происходит при двойном щелчке мышью элемента управления TextBox. | KeyDown | Происходит при нажатии клавиши на клавиатуре, когда фокус находится на элементе TextBox. | KeyPress | Происходит при вжатом положении клавиши на клавиатуре, когда фокус находится на элементе TextBox. | KeyUp | Происходит при отпускании клавиши на клавиатуре, когда фокус находится на элементе TextBox. | TextChanged | Происходит при изменении содержимого текстового окна TextBox. | Элемент RichTextBox Предоставляет элемент управления полем форматированного текста Windows. Находится в группе элементов Common Controls (рисунок 2.7).  Рисунок 2.7 – Элемент RichTextBox Основные свойства (таблица 2.7). Таблица 2.7 – Основные свойства элемента RichTextBox Название | Описание | Text | Получает или задает текст, сопоставленный с этим элементом управления. | Lines | Массив строк текстового поля. | MaxLength | Получает или задает максимальное разрешенное число знаков в текстовом окне (по умолчанию 2147483647 символов). | Multiline | Определяет поддерживает ли элемент многострочный текст. | Enabled | Возвращает или задает значение, показывающее, сможет ли элемент управления отвечать на действия пользователя. | Name | Возвращает или задает имя элемента управления. Стандарты те же что и для переменных С++. | Visible | Получает или задает значение, указывающее, отображается ли элемент управления. | ReadOnly | Возвращает или задает значение, определяющее возможность изменения содержимого элемента управления RichTextBox. | Rows | Возвращает или задает число строк, отображаемых в многострочном текстовом окне. | Columns | Возвращает или задает ширину отображаемого текстового окна в знаках. | ScrollBars | Получает или задает тип полос прокрутки, отображающихся в элементе управления RichTextBox. | Основные события (таблица 2.8). Таблица 2.8 – Основные события элемента RichTextBox Название | Описание | Click | Происходит при щелчке элемента управления. | DoubleClick | Происходит при двойном щелчке мышью элемента управления RichTextBox. | KeyDown | Происходит при нажатии клавиши на клавиатуре, когда фокус находится на элементе TextBox. | KeyPress | Происходит при вжатом положении клавиши на клавиатуре, когда фокус находится на элементе RichTextBox. | KeyUp | Происходит при отпускании клавиши на клавиатуре, когда фокус находится на элементе RichTextBox. | TextChanged | Происходит при изменении содержимого текстового окна RichTextBox. | Элемент Label Представляет стандартную надпись Windows. Находится в группе элементов Common Controls (рисунок 2.8).  Рисунок 2.8 – Элемент Label Основные свойства (таблица 2.9). Таблица 2.9 – Основные свойства элемента Label Название | Описание | Text | Получает или задает текст, сопоставленный с этим элементом управления. | TextAlign | Получает или задает выравнивание текста в элементе управления Label. | Image | Возвращает или задаёт изображение, отображаемое на элементе управления Label. | Visible | Получает или задает значение, указывающее, отображается ли элемент управления. | Enabled | Возвращает или задает значение, показывающее, сможет ли элемент управления отвечать на действия пользователя. | Name | Возвращает или задает имя элемента управления. Стандарты те же что и для переменных С++. | Основные события (таблица 2.10). Таблица 2.10 – Основные события элемента Label Название | Описание | Click | Происходит при щелчке элемента управления. | DoubleClick | Происходит при двойном щелчке мышью элемента управления Button. | Элемент RadioButton Представляет переключатель, который пользователь может устанавливать (выбирать), но не снимать (отменять выбор). Находится в группе элементов Common Controls (рисунок 2.9).  Рисунок 2.9 – Элемент RadioButton Основные свойства (таблица 2.11). Таблица 2.11 – Основные свойства элемента RadioButton Название | Описание | Text | Получает или задает текст, сопоставленный с этим элементом управления. | TextAlign | Получает или задает выравнивание текста в элементе управления RadioButton. | Image | Возвращает или задаёт изображение, отображаемое на элементе управления RadioButton. | Visible | Получает или задает значение, указывающее, отображается ли элемент управления. | Enabled | Возвращает или задает значение, показывающее, сможет ли элемент управления отвечать на действия пользователя. | Name | Возвращает или задает имя элемента управления. Стандарты те же что и для переменных С++. | Checked | Возвращает или задаёт значение, указывающее, находится ли RadioButton во включённом состоянии. | Основные события (таблица 2.12). Таблица 2.12 – Основные события элемента RadioButton Название | Описание | Click | Происходит при щелчке элемента управления. | DoubleClick | Происходит при двойном щелчке мышью элемента управления RadioButton. | CheckedChanged | Возникает при переходе RadioButton во включённое состояние. | Элемент CheckBox Представляет элемент управления — флажок, который пользователь может устанавливать и снимать. Находится в группе элементов Common Controls (рисунок 2.10).  Рисунок 2.10 – Элемент CheckBox Основные свойства (таблица 2.13). Таблица 2.13 – Основные свойства элемента CheckBox Название | Описание | Text | Получает или задает текст, сопоставленный с этим элементом управления. | TextAlign | Получает или задает выравнивание текста в элементе управления CheckBox. | Image | Возвращает или задаёт изображение, отображаемое на элементе управления CheckBox. | Visible | Получает или задает значение, указывающее, отображается ли элемент управления. | Enabled | Возвращает или задает значение, показывающее, сможет ли элемент управления отвечать на действия пользователя. | Name | Возвращает или задает имя элемента управления. Стандарты те же что и для переменных С++. | Checked | Возвращает или задаёт значение, указывающее, находится ли CheckBox во включённом состоянии. | CheckState | Возвращает или задаёт состояние CheckBox. Помимо отмеченного и пустого может принимать еще и всегда отмеченное состояние. | Основные события (таблица 2.14). Таблица 2.14 – Основные события элемента CheckBox Название | Описание | Click | Происходит при щелчке элемента управления. | DoubleClick | Происходит при двойном щелчке мышью элемента управления CheckBox. | CheckedChanged | Возникает при переходе RadioButton во включённое состояние. | Элемент numericUpDown Представляет регулятор Windows (также известный как элемент управления "вверх-вниз"), отображающий числовые значения. Находится в группе элементов Common Controls (рисунок 2.11).  Рисунок 2.11 – Элемент numericUpDown Основные свойства (таблица 2.15). Таблица 2.15 – Основные свойства элемента numericUpDown Название | Описание | Value | Возвращает или задает значение, присвоенное счетчику. | Visible | Получает или задает значение, указывающее, отображается ли элемент управления. | Enabled | Возвращает или задает значение, показывающее, сможет ли элемент управления отвечать на действия пользователя. | Name | Возвращает или задает имя элемента управления. Стандарты те же что и для переменных С++. | Minimum | Возвращает или задает минимальное допустимое значение для счетчика. | Maximum | Возвращает или задает максимальное значение для счетчика. | Increment | | Возвращает или задает значение для увеличения или уменьшения счетчика. | | ReadOnly | Возвращает или задает значение, определяющее возможность изменения значений счетчика, путем ввода с клавиатуры. | Основные события (таблица 2.16). Таблица 2.16 – Основные события элемента numericUpDown Название | Описание | Click | Происходит при щелчке элемента управления. | DoubleClick | Происходит при двойном щелчке мышью элемента управления numericUpDown. | ValueChanged | Возникает при изменении значений счетчика. | Элемент DataGridView Элемент, который отображает данные в табличном виде. Находится в группе элементов Data (рисунок 2.12).  Рисунок 2.12 – Элемент DataGridView Основные свойства (таблица 2.17). Таблица 2.17 – Основные свойства элемента DataGridView Название | Описание | Visible | Получает или задает значение, указывающее, отображается ли элемент управления. | Enabled | Возвращает или задает значение, показывающее, сможет ли элемент управления отвечать на действия пользователя. | Name | Возвращает или задает имя элемента управления. Стандарты те же что и для переменных С++. | Columns | Коллекция столбцов DataGridView. Может быть создана вручную, при помощи специального окна свойств или создаваться программно. Каждая колонка может быть: текстовым полем, выпадающим списком, CheckBox-ом, кнопкой, картинкой или ссылкой. | ReadOnly | Возвращает или задает значение, определяющее возможность изменения содержимого элемента управления DataGridView. | ScrollBars | Получает или задает тип полос прокрутки, отображающихся в элементе управления DataGridView. | ColumnHeadersVisible | Возвращает или задает значение, указывающее, отображается ли строка заголовка столбца. | RowHeadersVisible | Возвращает или задает значение, указывающее, отображается ли столбец, содержащий заголовки строк. | Каждая колонка имеет ряд собственных свойств (таблица 2.18). Таблица 2.18 – Основные свойства колонок элемента DataGridView Название | Описание | Visible | Получает или задает значение, указывающее, отображается ли элемент управления. | HeaderText | Возвращает или задает значение текста заголовка колонки. | Resizable | Возвращает или задает значение, определяющее возможность пользовательского изменения ширины колонки. | Frozen | Возвращает или задает значение, определяющее возможность движения колонки при прокрутке элемента DataGridView. | Width | Возвращает или задает значение ширины колонки. | ReadOnly | Возвращает или задает значение, определяющее возможность изменения содержимого колонки элемента управления DataGridView. | Основные события (таблица 2.19). Таблица 2.19 – Основные события элемента DataGridView Название | Описание | Click | Происходит при щелчке элемента управления. | CellEndEdit | Возникает после завершения редактирования ячейки. | Элемент Chart Элемент, который используется для построения разного вида диаграмм и графиков. Находится в группе элементов Data (рисунок 2.13).  Рисунок 2.13 – Элемент Chart Основные свойства (таблица 2.20). Таблица 2.20 – Основные свойства элемента Chart Название | Описание | Visible | Получает или задает значение, указывающее, отображается ли элемент управления. | Enabled | Возвращает или задает значение, показывающее, сможет ли элемент управления отвечать на действия пользователя. | Name | Возвращает или задает имя элемента управления. Стандарты те же что и для переменных С++. | Palette | Получает или задает палитру для элемента управления Chart. | Series | Получает объект SeriesCollection, который содержит объекты Series. SeriesCollection – разного рода графики и диаграммы присутствующие на одном элементе Chart. | Titles | Объект TitleCollection, используемый для хранения всех объектов Title, используемых элементом управления Chart. Содержит коллекцию заголовков диаграмм. | Элемент GroupBox Представляет собой элемент управления Windows, который отображает рамку вокруг группы элементов управления и, необязательно, заголовок над ней. Находится в группе элементов Containers (рисунок 2.14).  Рисунок 2.14 – Элемент GroupBox Основные свойства (таблица 2.22). Таблица 2.22 – Основные свойства элемента GroupBox Название | Описание | Text | Получает или задает текст, сопоставленный с этим элементом управления. | Visible | Получает или задает значение, указывающее, отображается ли элемент управления. | Enabled | Возвращает или задает значение, показывающее, сможет ли элемент управления отвечать на действия пользователя. | Name | Возвращает или задает имя элемента управления. Стандарты те же что и для переменных С++. | Основные события (таблица 2.23). Таблица 2.23 – Основные события элемента GroupBox Название | Описание | Click | Происходит при щелчке элемента управления. | DoubleClick | Происходит при двойном щелчке мышью элемента управления GroupBox. | Полезные классы и методы Convert Преобразует значение одного базового типа данных к другому базовому типу данных. Основные методы: ToDouble(Value) – преобразует Value в действительное число типа double. ToInt32(Value) – преобразует Value в целое число. ToString(Value) – преобразует Value в объект String (фактически в строку). Исключения: FormatException – недопустимые значения в Value (например, буквы в методе ToInt32). OverflowException – переполнение разрядной сетки. Пример: Convert::ToInt32("123"); Math Предоставляет константы и статические методы для тригонометрических, логарифмических и иных общих математических функций. Основные методы: Те же методы что и функции в библиотеке math.h, отличием является лишь способ записи и вызова. Пример: double GetLeftBaseRadianAngle() { double sinX = 0.5; return Math::Round( Math::Asin( sinX ), 2 ); } Помимо функций в данном классе есть две математических константы: E и PI, которые возвращают числа е и π соответственно. Пример: Math::E; TryParse Преобразует строковое представление числа в эквивалентное ему целое число, число двойной точности с плавающей запятой и др. в зависимости от вызова. Возвращает значение, указывающее, успешно ли выполнено преобразование. Пример: if (!Double::TryParse(Convert::ToString(GridArray->CurrentCell->Value), value)) MessageBox Отображает окно сообщения, в котором могут содержаться текст, кнопки и символы, которые информируют пользователя и дают ему указания. Основные методы: Show(String, String) - отображает окно сообщения с указанными текстом и заголовком. Пример: if (!Double::TryParse(Convert::ToString(GridArray->CurrentCell->Value), item)){ MessageBox::Show("Введите действительное число","Ошибка"); } |