Элементы управления
Элементы управления представляют собой визуальные классы, которые получают введенные пользователем данные и могут инициировать различные события. Все элементы управления наследуются от класса Control и поэтому имеют ряд общих свойств:
Anchor : Определяет, как элемент будет растягиваться
BackColor : Определяет фоновый цвет элемента
BackgroundImage : Определяет фоновое изображение элемента
ContextMenu : Контекстное меню, которое открывается при нажатии на элемент правой кнопкой мыши. Задается с помощью элемента ContextMenu
Cursor : Представляет, как будет отображаться курсор мыши при наведении на элемент
Dock : Задает расположение элемента на форме
Enabled : Определяет, будет ли доступен элемент для использования. Если это свойство имеет значение False, то элемент блокируется.
Font : Устанавливает шрифт текста для элемента
ForeColor : Определяет цвет шрифта
Location : Определяет координаты верхнего левого угла элемента управления
Name : Имя элемента управления
Size : Определяет размер элемента
Width : ширина элемента
Height : высота элемента
TabIndex : Определяет порядок обхода элемента по нажатию на клавишу Tab
Tag : Позволяет сохранять значение, ассоциированное с этим элементом управления
Кнопка
Наиболее часто используемым элементом управления является кнопка. Обрабатывая событие нажатия кнопки, мы может производить те или иные действия.
При нажатии на кнопку на форме в редакторе Visual Studio мы по умолчанию попадаем в код обработчика события Click , который будет выполняться при нажатии:
Оформление кнопки
Чтобы управлять внешним отображением кнопки, можно использовать свойство FlatStyle. Оно может принимать следующие значения:
Flat — Кнопка имеет плоский вид
Popup — Кнопка приобретает объемный вид при наведении на нее указателя, в иных случаях она имеет плоский вид
Standard — Кнопка имеет объемный вид (используется по умолчанию)
System — Вид кнопки зависит от операционной системы
Изображение на кнопке
Как и для многих элементов управления, для кнопки можно задавать изображение с помощью свойства BackgroundImage. Однако мы можем также управлять размещением текста и изображения на кнопки. Для этого надо использовать свойство TextImageRelation . Оно приобретает следующие значения:
Overlay : текст накладывается на изображение
ImageAboveText : изображение располагается над текстом
TextAboveImage : текст располагается над изображением
ImageBeforeText : изображение располагается перед текстом
TextBeforeImage : текст располагается перед изображением
Например, установим для кнопки изображение. Для этого выберем кнопку и в окне Свойств нажмем на поле Image (не путать с BackgroundImage). Нам откроется диалоговое окно установи изображения:
В этом окне выберем опцию Local Resource и нажмем на кнопку Import , после чего нам откроется диалоговое окно для выбора файла изображения.
После выбора изображения мы можем установить свойство ImageAlign , которое управляет позиционированием изображения на кнопке:

Нам доступны 9 вариантов, с помощью которых мы можем прикрепить изображение к определенной стороне кнопки. Оставим здесь значение по умолчанию — MiddleCenter , то есть позиционирование по центру.
Затем перейдем к свойству TextImageRelation и установим для него значение ImageBeforeText . В итоге мы получим кнопку, где сразу после изображения идет надпись на кнопке:

Клавиши быстрого доступа
При работе с формами при использовании клавиатуры очень удобно пользоваться клавишами быстрого доступа. При нажатии на клавиатуре комбинации клавиш At+некоторый символ, будет вызываться определенная кнопка. Например, зададим для некоторой кнопки свойство Text равное &Аватар . Первый знак — амперсанд — определяет ту букву, которая будет подчеркнута. В данном случае надпись будет выглядеть как А ватар. И теперь чтобы вызвать событие Click, нам достаточно нажать на комбинацию клавиш Alt+А.
Кнопки по умолчанию
Форма, на которой размещаются все элементы управления, имеет свойства, позволяющие назначать кнопку по умолчанию и кнопку отмены.
Так, свойство формы AcceptButton позволяет назначать кнопку по умолчанию, которая будет срабатывать по нажатию на клавишу Enter.
Аналогично работает свойство формы CancelButton , которое назначает кнопку отмены. Назначив такую кнопку, мы можем вызвать ее нажатие, нажав на клавишу Esc.
Компонент Button (кнопка). Взаимодействие компонент 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 (метка) можно прочитать здесь .
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() следующий:
Как видно из вышеприведенного кода, по нажатию кнопки button1 в компоненте label1 выводится информация о текущих размерах формы. Если при выполнении программы попытаться изменить размеры формы и нажать кнопку button1 , новые размеры снова отобразятся в label1 .
4.2.4. Программирование события Click компонента button2 . Показать или скрыть компоненты формы
При нажатии на кнопку button2 ( «Show/Hide» ) должны быть скрытыми или отображенными компоненты label1 , label2 , button2 . Согласно этому, в обработчике события Click компонента button2 необходимо ввести следующий текст
4.2.5. Программирование обработчика события MouseMove компонента label2
Событие MouseMove любого элемента управления возникает, когда мышка двигается над прямоугольной областью этого элемента управления. Компонент типа Label также может программировать это событие.
В обработчике события label2_MouseMove() вводится следующий код
После запуска программы на выполнение переместить мышку внутрь прямоугольной области, занятой меткой label2 , не получится.
Add parameter to Button click event
And I want to pass
passed as parameter to the button1_click handler.
How do I go about this?Disclaimer: really new to WPF

4 Answers 4
In your handler, cast the sender object to Button and access the Tag property:
A more elegant solution would be to use the Command pattern of WPF: Create a Command for the functionality you want the button to perform, bind the Command to the Button’s Command property and bind the CommandParameter to your value.
I’m not overly a fan of ‘Tag’ so perhaps
Then accessing via the Attributes.
Well there are two ways of doing this:
Cast the DataContext
Or use the Tag property which is a generic state property
Using Xaml and DataContext
And MainPage Code Behing, this code example is to navigate to another page using the page type as argument, you need to make "YourPageTypeHere" and reference page here.
Then implement code Behind.
Also in your App class need a Instance of NavigationPage in MainPage to Navigate (For this example)
Общая структура программы [ править ]
Любая программа, использующая Wondows Forms может иметь следующий вид:
MainForm — главная форма.
Основные классы [ править ]
Windows Forms содержит следующие классы:
- System.Windows.Forms.Button или Button (кнопка)
- System.Windows.Forms.Label или Label (метка)
- System.Windows.Forms.CheckBox или CheckBox (флажок)
- System.Windows.Forms.RadioButton или RadioButton (радио-кнопка)
- System.Windows.Forms.TrackBar или TrackBar (ползунок)
- System.Windows.Forms.ListBox или ListBox (список)
- System.Windows.Forms.ComboBox или ComboBox (выпадающий список)
- System.Windows.Forms.Form или Form (форма)
- System.Windows.Forms.GroupBox или GroupBox (фрейм)
- System.Windows.Forms.SplitContainer или SplitContainer (элемент разделения окна)
- System.Windows.Forms.MenuStrip или MenuStrip (главное меню)
- System.Windows.Forms.ToolStripMenuItem или ToolStripMenuItem (подменю)
Button [ править ]
System.Windows.Forms.Button — класс кнопки. Синтаксис ее создания:
name — имя кнопки.
В качестве значения должна быть точка System.Drawing.Point.
Для установки его значения используйте вместо := +=.
Label [ править ]
System.Windows.Forms.Label — класс метки. Синтаксис ее создания:
name — имя метки.
Свойство Значение Width Ширина метки. Height Высота метки. Text Текст на метки. BackColor Цвет фона метки. ForeColor Цвет текста метки. Location Позиция метки на форме. AutoSize Будет ли меняться размер метки, подгоняясь под размер содержимого, или будет отображаться лишь та часть содержимого, умещающаяся на метке. Parent Родительский виджет. Visible Видна ли метка. CheckBox [ править ]
System.Windows.Forms.CheckBox — класс флажка. Синтаксис его создания:
name — имя флажка.
Свойство Значение Width Ширина флажка. Height Высота флажка. Text Текст на флажка. BackColor Цвет фона флажка. ForeColor Цвет текста флажка. Location Позиция флажка форме. AutoSize Будет ли меняться размер флажка, подгоняясь под размер содержимого, или будет отображаться лишь та часть содержимого, умещающаяся на флажка. Parent Родительский виджет. Visible Виден ли флажок. Checked Определяет установлен ли флажок или нет. RadioBox [ править ]
System.Windows.Forms.RadioBox- класс радио-кнопки. Синтаксис ее создания:
name — имя радио-кнопки.
Свойство Значение Width Ширина радио-кнопки. Height Высота радио-кнопки. Text Текст на радио-кнопки. BackColor Цвет фона радио-кнопки. ForeColor Цвет текста радио-кнопки. Location Позиция радио-кнопки форме. AutoSize Будет ли меняться размер радио-кнопки, подгоняясь под размер содержимого, или будет отображаться лишь та часть содержимого, умещающаяся на радио-кнопке. Parent Родительский виджет. Visible Видна ли радио-кнопка. Checked Определяет установлена ли радио-кнопка или нет. TrackBar [ править ]
System.Windows.Forms.TrackBar — класс ползунка. Синтаксис его создания:
name — имя ползунка.
- System.Windows.Forms.Orientation.Horizontal — горизонтальная
- System.Windows.Forms.Orientation.Vertical — вертикальная
- System.Windows.Forms.TickStyle.Both — с двух сторон
- System.Windows.Forms.TickStyle.BottomRight — деления либо снизу (для горизонтального ползунка) или справа (для вертикального полузнка)
- System.Windows.Forms.TickStyle.TopLeft — деления либо сверху (для горизонтального ползунка) или слева (для вертикального полузнка)
- System.Windows.Forms.TickStyle.None — не отображаются
ListBox [ править ]
System.Windows.Forms.ListBox- класс списка. Синтаксис его создания:
name — имя списка.
Свойство Значение Width Ширина списка. Height Высота списка. Location Позиция списка на форме. Parent Родительский виджет. Visible Виден ли список. ItemHeight Высота элемента списка. Items.Count Количество элементов списка. Items.Item[k] K-ый элемент списка. IntegralHeight Указывает будет ли подгоняться размер списка под размер элементов, чтобы был видны названия всех элементов полностью. Событие Описание Click Хранит ссылку на процедуру, которая выполнится при щелчке по списку. SelectedIndexChanged Хранит ссылку на процедуру, которая выполнится при смене выбранного элемента списка. Процедура Значение a. Items.Add(t) Добавляет в список элемент с текстом t. a. Items.Clear Очищает список. ComboBox [ править ]
System.Windows.Forms.ComboBox — класс выпадающего списка. Для его создания пишите:
name — имя выпадающего списка.
Свойство Значение Width Ширина выпадающего списка. Height Высота выпадающего списка. Parent Родительский виджет. Visible Виден ли выпадающий список. Count Количество элементов в выпадающем списке. SelectedIndex Индекс выбранного элемента выпадающего списка. SelectedItem Выбранный элемент выпадающего списка. Items.Item[k] K-ый элемент выпадающего списка. IntegralHeight Указывает будет ли подгоняться размер выпадающего списка под размер элементов, чтобы был видны названия всех элементов полностью. Событие Описание Click Хранит ссылку на процедуру, которая выполнится при щелчке по выпадающему списку. SelectedIndexChanged Хранит ссылку на процедуру, которая выполнится при смене выбранного элемента выпадающего списка. Ниже a — выпадающий список.
Функция Описание a. Items.Add Добавляет в выпадающий список элемент. a. Items.Clear Удаляет все элементы выпадающего списка. GroupBox [ править ]
System.Windows.Forms.GroupBox- класс фрейма. Синтаксис его создания:
name — имя кнопки.
В качестве значения должна быть точка System.Drawing.Point.
SplitContainer [ править ]
System.Windows.Forms.SplitContainer — класс элемента разделения окна. Синтаксис его создания:
name — имя элемента разделения окна.
В качестве значения должна быть точка System.Drawing.Point.
- System.Windows.Forms.Orientation.Horizontal — горизонтальная
- System.Windows.Forms.Orientation.Vertical — вертикальная
MenuStrip [ править ]
System.Windows.Forms.MenuStrip — класс главного меню. Синтаксис его создания:
name — имя главного меню.
- объект перемещения меню спрятан — System.Windows.Forms.ToolStripGripStyle.Hidden
- объект перемещения меню виден- System.Windows.Forms.ToolStripGripStyle.Visisble
Ниже a — главное меню.
Процедура Значение a. Items.Add(k) Добавляет подменю k в главное меню. ToolStripMenuItem [ править ]
System.Windows.Forms.ToolStripMenuItem — класс подменю. Синтаксис его создания:
name — имя подменю.
Свойство Значение BackColor Цвет фона заголовка подменю. ForeColor Цвет текста заголовка подменю. Ниже b — подменю.
- t — текст, отображаемый на пункте подменю; i — иконка пункта подменю (чтобы ее не было пишите nil); act — процедура, выполняющаяся при нажатии на этот пункт меню.
- иконка зугружается следующим образом: new System.Drawing.Bitmap(GetResourceStream(путь_к_изображению))
Форма [ править ]
System.Windows.Forms.Form — класс формы. Общий синтаксис ее создания:
Свойство Описане Text Заголовок формы. Свойство Описане a. Controls.Add(виджет) Добавляет виджет на форму. Курсор [ править ]
Cursor — объект курсора в Windows Forms.
Свойство Значение System.Windows.Forms.Cursor.Position.X Позиция курсора по X. System.Windows.Forms.Cursor.Position.Y Позиция курсора по Y. Обработка событий [ править ]
Любая процедура, являющаяся обработчиком события должна иметь вид:
p — имя процедуры.
Стили [ править ]
Подключить визуальные стили для более красивого отображения виджетов можно так: