Компонент Button (кнопка). Взаимодействие компонент Label и Button. Событие MouseMove
Перед изучением данной темы рекомендуется ознакомиться с предыдущей темой:
Содержание
- 1. Общие сведения о компоненте Button
- 2. Свойства компонента Button
- 3. События элемента управления Button
- 4. Пример использования компонентов Label и Button. Программирование события MouseMove
- 4.1. Условие задачи
- 4.2. Выполнение
- 4.2.1. Создание проекта
- 4.2.2. Размещение элементов управления Label, Button. Настройка элементов управления
- 4.2.3. Программирование события Click компонента button1. Вывести размеры формы
- 4.2.4. Программирование события Click компонента button2. Показать или скрыть компоненты формы
- 4.2.5. Программирование обработчика события MouseMove компонента label2
- Связанные темы
Поиск на других ресурсах:
1. Общие сведения о компоненте Button
Компонент Button представляет кнопку на форме (рисунок 1).
Рисунок 1. Компонент Button. Размещение на панели Toolbox
Компонент Button является классом, унаследованным от абстрактного класса ButtonCase и реализующим интерфейс IButtonControl. В свою очередь, класс ButtonCase унаследован от класса Control.
Во множестве классов .NET Framework существует 3 типа кнопок, унаследованных от ButtonCase: Button, CheckBox, RadioButton.
Класс (компонент) Button имеет набор свойств, доступных как программно, так и в режиме проектирования (рисунок 2).
Рисунок 2. Свойства компонента Button
Ниже приведены основные свойства компонента Button.
⇑
2. Свойства компонента Button
Основные свойства элемента управления Button даны ниже. Здесь приведены базовые свойства, отличающиеся от свойств компонента Label. Более подробно о компоненте Label (метка) можно прочитать здесь.
Свойство | Описание |
Name | Это название экземпляра объекта типа Button. |
AutoSize | Если AutoSize=True, то элемент управления изменяет свой размер автоматически в зависимости от контента (текста, набранного в свойстве Text). |
AutoSizeMode | Определение режима, по которому элемент управления Button изменяет свой размер. Это свойство действует только если AutoSize=True. |
DialogResult | Результат возврата из модальной формы, которая вызывалась методом ShowDialog(). Если в проекте создана новая форма типа Form2, содержащая кнопку OK, то вызов формы и проверка результата возврата из формы может быть примерно следующим:
// Объявить экземпляр типа форма Form2 f2 = new Form2(); // Если результат возврата из формы OK, то выполнить какие то действия if (f2.ShowDialog() == DialogResult.OK) { // действия, которые нужно выполнить если нажата кнопка OK // ... } |
FlatAppearance | Для кнопок, имеющих FlatStyle=FlatStyle.Flat, определяет внешний вид границы и цвета, используемых для проверки и состояния мышки. |
FlatStyle | Определяет внешний вид элемента управления, когда пользователь двигает мышкой поверх элемента управления и кликает по нему. |
Padding | Определяет внутренние отступы от краев элемента управления, определяющие область этого элемента |
Size | Размер элемента управления в пикселях |
TabIndex | Позиция табуляции. Эта позиция актуальна когда TabStop=True |
TabStop | Если значение TabStop=True, то элемент управления может принимать фокус ввода с помощью клавиши Tab |
Text | Текст, ассоциирующийся с элементом управления |
TextAlign | Выравнивание текста, отображаемого в элементе управления |
TextImageRelation | Определяет позицию изображения в отношении текста кнопки. Это свойство имеет смысл, если загружено хотя бы одно изображение для элемента управления кнопка |
⇑
3. События элемента управления Button
Следующая таблица отображает главные действия элемента управления типа Button.
Событие | Описание |
Click | Клик на кнопке |
MouseClick | Клик на кнопке с получением более подробной информации с помощью класса MouseEventArgs |
Enter | Возникает, когда кнопка получает фокус ввода |
Leave | Возникает, когда элемент управления (кнопка) теряет активность (фокус) на форме |
KeyDown | Появляется, когда нажата клавиша (в том числе и клавиши Alt и Ctrl). Позволяет получить код нажатой клавиши, описываемый в перечислении Keys. |
KeyPress | Возникает, когда элемент управления имеет фокус и нажата и отпущена клавиша. Позволяет получить код символа типа char. |
KeyUp | Возникает когда отпущена клавиша. Также, как и для события KeyDown, позволяет получить код нажатой клавиши, описанный в перечислении Keys |
PreviewKeyDown | Возникает перед событием KeyDown в момент когда нажата клавиша и фокус ввода находится над кнопкой |
MouseDown | Возникает, когда указатель мыши находится над компонентом, и кнопка мыши нажата |
MouseEnter | Возникает, когда мышка входит в видимую часть элемента управления |
MouseHover | Возникает, когда мышка остается внутри элемента управления некоторое время |
MouseLeave | Возникает, когда мышка оставляет видимую часть элемента управления |
MouseMove | Возникает, когда курсор мыши двигается над областью кнопки |
MouseUp | Возникает, когда указатель мыши находится над компонентом и кнопка мыши отпущена |
⇑
4. Пример использования компонентов Label и Button. Программирование события MouseMove
4.1. Условие задачи
Разработать проект, содержащий 2 кнопки (Button) и 2 метки (Label). Исследовать работу компонента выполнив следующие пункты.
4.2. Выполнение
4.2.1. Создание проекта
Средствами Microsoft Visual Studio создать проект. Пример создания проекта типа «C# — Windows Forms» можно посмотреть здесь.
Назвать проект «Demo Program». Для этого можно использовать свойство Text основной формы Form1.
⇑
4.2.2. Размещение элементов управления Label, Button. Настройка элементов управления
Разместить на форме два элемента управления типа Label и два элемента управления типа Button. В результате система создаст четыре экземпляра с именами label1, label2, button1, button2 (рисунок 3).
Рисунок 3. Начальное состояние формы и элементов управления на форме
Настроить следующие свойства элементов управления формы:
- label1.Text = «Form Size = « (свойство Text элемента управления label1);
- label2.Text = «Catch me!»;
- button1.Text = «Form Size»;
- button2.Text = «Hide/Show».
После корректировки размеров некоторых элементов управления и настройки форма будет выглядеть как показано на рисунке 4.
Рисунок 4. Вид формы после настройки элементов управления
⇑
4.2.3. Программирование события Click компонента button1. Вывести размеры формы
На этом этапе необходимо запрограммировать обработчик события Click компонента button1. Более подробно об особенностях программирования события в Microsoft Visual Studio можно посмотреть здесь.
Текст обработчика события button1_Click() следующий:
private void button1_Click(object sender, EventArgs e) { // Обработчик события клика на кнопке button1. // Вывести размеры формы, использоват свойства Width, Height. label1.Text = String.Format("Form Size: W = {0}, H = {1}", this.Width, this.Height); }
Как видно из вышеприведенного кода, по нажатию кнопки button1 в компоненте label1 выводится информация о текущих размерах формы. Если при выполнении программы попытаться изменить размеры формы и нажать кнопку button1, новые размеры снова отобразятся в label1.
⇑
4.2.4. Программирование события Click компонента button2. Показать или скрыть компоненты формы
При нажатии на кнопку button2 («Show/Hide») должны быть скрытыми или отображенными компоненты label1, label2, button2. Согласно этому, в обработчике события Click компонента button2 необходимо ввести следующий текст
private void button2_Click(object sender, EventArgs e) { // Скрыть/Показать все - свойство Visible button1.Visible = !button1.Visible; label1.Visible = !label1.Visible; label2.Visible = !label2.Visible; if (button1.Visible) button2.Text = "Hide"; else button2.Text = "Show"; }
⇑
4.2.5. Программирование обработчика события MouseMove компонента label2
Событие MouseMove любого элемента управления возникает, когда мышка двигается над прямоугольной областью этого элемента управления. Компонент типа Label также может программировать это событие.
В обработчике события label2_MouseMove() вводится следующий код
private void label2_MouseMove(object sender, MouseEventArgs e) { // Событие MouseMove для компонента label2 означает, что // нужно сдвинуть метку // 1. Попытка размещения области label2 label2.Left = label2.Left + 10; label2.Top = label2.Top - 10; // 2. Проверка, вышла ли метка за пределы формы по координате X if ((label2.Left < -20) || (label2.Left > this.Width - 20)) { // Если метка вышла за пределы формы по координате x, // то изменить горизонтальную позицию label2 label2.Left = 10; } // 3. Проверка, вышла ли метка за пределы формы по координате Y if ((label2.Top < -10) || (label2.Top > this.Height - 10)) { // Если метка за пределами формы по координате Y, // то изменить вертикальную позицию label2 label2.Top = 80; } }
После запуска программы на выполнение переместить мышку внутрь прямоугольной области, занятой меткой label2, не получится.
⇑
Связанные темы
- Создание пятиугольной формы
- Пример разработки унаследованной формы
- Компонент Label. Программное создание элемента управления Label. Класс MessageBox. Перечисление DialogResult
⇑