Основные элементы управления Классы элементов происходят от класса System::Windows::Forms::Control.
Классы находятся в пространстве имен System::Windows::Forms. Некоторые классы для задания элементов управления:
Label – текстовая метка;
Button – кнопка;
TextBox – текстовое поле;
CheckBox – контрольный переключатель;
RadioButton – радиокнопка;
ListBox – список;
ComboBox – комбинированный список.
Рассмотрим некоторые классы элементов управления, которые необходимы для выполнения работы.
Класс Label (Метка)
Предоставляет текстовую метку для элемента управления.
Можно для объекта класса обрабатывать события, например, «щелчок» на элементе, но чаще этого не делают. Назначение элемента заголовок для другого элемента, например, текстового поля.
Основное свойство (поле): Text
Класс Button (Кнопка)
Основное свойство (поле): Text.
Основное событие: Click (нажатие на кнопку).
Класс TextBox (Текстовое поле)
Элемент управления TextBox позволяет пользователю вводить текст в приложение. Этот элемент управления обладает дополнительными функциональными возможностями, включая редактирование в многострочном режиме и маскировку ввода знаков пароля.
Основное поле: Text.
Основное событие: TextChanged (Изменение текста).
Класс ListBox
Некоторые поля (свойства): Items, SelectedItems предоставляют доступ к коллекциям, используемым ListBox.
Основное событие: SelectedIndexChanged (изменение выбора элемента).
Примеры работы со списком
Добавить строку в список:
listBox1->Items->Add( “Hello World”);
Получить строку из выделенного элемента:
String ^ str=listBox1->SelectedItem->ToString();
Удалить выделенный элемент:
int i=listBox1->SelectedIndex;
listBox1->Items->RemoveAt(i);
Очистить все элементы списка:
listBox1->Items->Clear();
Задачи и порядок выполнения работы
Условие задачи:
Разработать приложение на основе формы – калькулятор для вычисления арифметических операций (+ - * /). Все проведенные операции добавляются в список, который может быть очищен при нажатии кнопки. Калькулятор может иметь примерный вид, представленный на рисунке 11 (в зависимости от варианта задания).
Рисунок 11 – Приложение типа калькулятор
Пример выполнения работы
Для решения задачи необходимо создать приложение по шаблону CLR, тип проекта «Пустой проект CLR» (в более ранних версиях существовал шаблон Windows Forms Application – Приложение на базе формы, можно было использовать его для создания приложение с формой), окно для создания проекта представлено на рисунке 12.
Рисунок 12 – Вид окна для создания проекта
После создания пустого проекта в него необходимо добавить класс, созданный на базе класса System::Windows::Forms::Form (в более ранних версиях при создании проекта Windows Forms Application это действие выполнять не надо).Для этого через вкладку классы с использованием правой клавиши мыши и появившегося контекстного меню, в котором выбираем элементы «Добавить – Класс», появится окно, представленное на рисунке 13, в котором устанавливаем показанные на рисунке параметры.
Рисунок 13 – Окно для добавления класса формы
Форму можно редактировать графически через конструктор форм и добавлять в форму обработчики событий по аналогии с приложениями MFC.
После редактирования формы через вкладку обозреватель решений в проект добавляем новый файл с расширением .cpp, в который добавляем следующий код.
#include "MyForm1.h"
using namespace MyForm;
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// Create the main window and run it
Application::Run(gcnew MyForm1());
return 0;
}
Если запустить проект в таком виде, то вначале появится консольное окно, а затем форма, чтобы устранить этот недостаток необходимо выполнить следующее. В свойствах проекта во вкладке Компоновщик – Система для параметра «Подсистема» необходимо установить значение Windows, см. рисунок 14. В свойствах проекта во вкладке Компоновщик – Дополнительно для параметра «Точка входа» установить значение main, см. рисунок 15.
Рисунок 14 – Вкладка Компоновщик - Система
Рисунок 15 – Вкладка Компоновщик - Дополнительно
Исходный текст обработчиков событий от нажатия кнопок, добавленных в класс формы (class MyForm1 : public System::Windows::Forms::Form):
// Обработчики событий нажатия на кнопки + - * /
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Double D1=Convert::ToDouble(textBox1->Text); // Преобразуем из строки в Double
Double D2=Convert::ToDouble(textBox2->Text); // Преобразуем из строки в Double
Double D3=D1+D2; // Получаем результат
textBox3->Text=D3+""; // Преобразуем результат в строку и помещаем в
// текстовое поле
String ^ str=D1+"+"+D2+"="+D3; // Строка для списка
listBox1->Items->Add(str); // Строку помещаем в список
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
Double D1=Convert::ToDouble(textBox1->Text); // Преобразуем из строки в Double
Double D2=Convert::ToDouble(textBox2->Text); // Преобразуем из строки в Double
Double D3=D1-D2; // Получаем результат
textBox3->Text=D3.ToString(); // Преобразуем результат в строку и помещаем
// в текстовое поле
String ^ str=D1+"-"+D2+"="+D3; // Строка для списка
listBox1->Items->Add(str); // Строку помещаем в список
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
Double D1=Convert::ToDouble(textBox1->Text); // Преобразуем из строки в Double
Double D2=Convert::ToDouble(textBox2->Text); // Преобразуем из строки в Double
Double D3=D1*D2; // Получаем результат
textBox3->Text=Convert::ToString(D3); // Преобразуем результат в строку и
// помещаем в текстовое поле
String ^ str=D1+"*"+D2+"="+D3; // Строка для списка
listBox1->Items->Add(str); // Строку помещаем в список
}
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {
Double D1=Convert::ToDouble(textBox1->Text); // Преобразуем из строки в Double
Double D2=Convert::ToDouble(textBox2->Text); // Преобразуем из строки в Double
Double D3=D1/D2; // Получаем результат
textBox3->Text=D3+""; // Преобразуем результат в строку и помещаем
// в текстовое поле
String ^ str=D1+"/"+D2+"="+D3; // Строка для списка
listBox1->Items->Add(str); // Строку помещаем в список
}
// Обработчик события от кнопки "Очистить список"
private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) {
listBox1->Items->Clear(); // Очистить все элементы списка
}
|