Windows Form. Элементы управления для создания интерфейсов для приложений на языке С#
- Элементы управления представляют собой визуальные классы, которые получают введенные пользователем данные и могут инициировать различные события. Все элементы управления наследуются от класса Control и поэтому имеют ряд общих свойств:
- Anchor : Определяет, как элемент будет растягиваться
- BackColor : Определяет фоновый цвет элемента
- BackgroundImage : Определяет фоновое изображение элемента
- ContextMenu : Контекстное меню, которое открывается при нажатии на элемент правой кнопкой мыши. Задается с помощью элемента ContextMenu
- Cursor : Представляет, как будет отображаться курсор мыши при наведении на элемент
- Dock : Задает расположение элемента на форме
- Enabled : Определяет, будет ли доступен элемент для использования. Если это свойство имеет значение False, то элемент блокируется.
- Font : Устанавливает шрифт текста для элемента
- ForeColor : Определяет цвет шрифта
- Location : Определяет координаты верхнего левого угла элемента управления
- Name : Имя элемента управления
- Size : Определяет размер элемента
- Width : ширина элемента
- Height : высота элемента
- TabIndex : Определяет порядок обхода элемента по нажатию на клавишу Tab
- Tag : Позволяет сохранять значение, ассоциированное с этим элементом управления
Кнопка
Наиболее часто используемым элементом управления является кнопка. Обрабатывая событие нажатия кнопки, можно производить те или иные действия.
Оформление кнопки
Чтобы управлять внешним отображением кнопки, можно использовать свойство FlatStyle . Оно может принимать следующие значения:
- Flat - Кнопка имеет плоский вид
- Popup - Кнопка приобретает объемный вид при наведении на нее указателя, в иных случаях она имеет плоский вид
- Standard - Кнопка имеет объемный вид (используется по умолчанию)
- System - Вид кнопки зависит от операционной системы
Изображение на кнопке
Для кнопки можно задавать изображение с помощью свойства BackgroundImage. Можно управлять размещением текста и изображения на кнопки. Для этого надо использовать свойство TextImageRelation . Оно приобретает следующие значения:
- Overlay : текст накладывается на изображение
- ImageAboveText : изображение располагается над текстом
- TextAboveImage : текст располагается над изображением
- ImageBeforeText : изображение располагается перед текстом
- TextBeforeImage : текст располагается перед изображением
Например, установим для кнопки изображение. Для этого выберем кнопку и в окне Свойств нажмем на поле Image (не путать с BackgroundImage). Нам откроется диалоговое окно установки изображения:
В этом окне нужно выбрать опцию Local Resource и нажать на кнопку Import, после чего нам откроется диалоговое окно для выбора файла изображения.
После выбора изображения можно установить свойство ImageAlign , которое управляет позиционированием изображения на кнопке:
Доступны 9 вариантов, с помощью которых можно прикрепить изображение к определенной стороне кнопки. Установим значение по умолчанию –МiddleCenter (позиционирование по центру).
Далее будем использовать свойство ТextImageRelation. Для него установим
значение ImageBeforeText. Получим кнопку, где сразу после изображения идет надпись на кнопке:
Клавиши быстрого доступа
При работе с формами при использовании клавиатуры очень удобно пользоваться клавишами быстрого доступа. При нажатии на клавиатуре комбинации клавиш Alt+некоторый символ, будет вызываться определенная кнопка. Например, зададим для некоторой кнопки свойствo Text равное &Аватар/ Первый знак - амперсанд - определяет ту букву, которая будет подчеркнута. В данном случае надпись будет выглядеть как Аватар. И теперь чтобы вызвать событие Click достаточно нажать на комбинацию клавиш Alt+A.
Кнопки по умолчанию
Форма, на которой размещаются все элементы управления, имеет свойства, позволяющие назначать кнопку по умолчанию и кнопку отмены.
Так, свойство формы AcceptButton позволяет назначать кнопку по умолчанию, которая будет срабатывать по нажатию на клавишу Enter. Аналогично работает свойство формы CancelButton, которое назначает кнопку отмены. Назначив такую кнопку, мы можем вызвать ее нажатие, нажав на клавишу Esc/
LinkLabel
Особый тип меток представляют элементы LinkLabel , которые предназначены
для вывода ссылок, которые аналогичны ссылкам, размещенным на
стандартных веб-станиц.
Также, как и с обычными ссылками на веб-страницах, можно по отношению
данному элементу определить три цвета:
- Свойство ActiveLinkColo r задает цвет ссылки при нажатии
- Свойство LinkColo r задает цвет ссылки до нажатия, по которой еще не было переходов
- Свойство V isitedLinkColo r задает цвет ссылки, по которой уже были переходы
- Кроме цвета ссылки для данного элемента можно задать свойство LinkBehavior , которое управляет поведением ссылки.
Это свойство принимает четыре возможных значения:
- SystemDefault : для ссылки устанавливаются системные настройки
- AlwaysUnderlin e : ссылка всегда подчеркивается
- HoverUnderlin e : ссылка подчеркивается только при наведении на нее курсора мыши
- NeverUnderlin e : ссылка никогда не подчеркивается
По умолчанию весь текст на данном элементе считается ссылкой. C
помощью свойства LinkAre a можно изменить область ссылки.
Например , если не включать в ссылку первые шесть символов, то нужно
задать подсвойство Start :
Чтобы выполнить переход по ссылке по нажатию на нее, надо дополнительно
написать код. Данный код должен обрабатывать событие LinkClicked, которое
есть у элемента LinkLabel.
Например, если на форме есть элемент ссылки называется linkLabel1, который
содержит некоторую ссылку:
Чтобы перейти по ссылке, зададим обработчик LinkClicked:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// задаем обработчик события
linkLabel1.LinkClicked += linkLabel1_LinkClicked;
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start(" http://metanit.com ");
}
}
Метод System.Diagnostics.Process.Start() откроет данную ссылку в
веб-браузере, который установлен в системе браузером по умолчанию .
Текстовое поле TextBox
Для ввода и редактирования текста предназначены текстовые поля – элемент
TextBox. Так же как и у элемента Label текст элемента TextBox можно
установить или получить с помощью свойства Text.
По умолчанию при переносе элемента с панели инструментов создается
однострочное текстовое поле. Для отображения больших объемов
информации в текстовом поле нужно использовать его
свойства Multiline и ScrollBars. При установке для свойства Multiline значения
true, все избыточные символы, которые выходят за границы поля, будут
переноситься на новую строку.
Кроме того, можно сделать прокрутку текстового поля, установив для его
свойства ScrollBars одно из значений:
- None : без прокруток (по умолчанию)
- Horizontal : создает горизонтальную прокрутку при длине строки, превышающей ширину текстового поля
- Vertical : создает вертикальную прокрутку, если строки не помещаются в текстовом поле
- Both : создает вертикальную и горизонтальную прокрутку
Автозаполнение текстового поля
Элемент TextBox обладает достаточными возможностями для создания
автозаполняемого поля. Для этого нам надо привязать
свойство AutoCompleteCustomSource элемента TextBox к некоторой
коллекции, из которой берутся данные для заполнения поля.
Добавим на форму текстовое поле и пропишем в код события загрузки
следующие строки :
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
AutoCompleteStringCollection source = new AutoCompleteStringCollection()
{
"Кузнецов",
"Иванов",
"Петров",
"Кустов"
};
textBox1.AutoCompleteCustomSource = source;
textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
}
- Режим автодополнения, представленный свойством , имеет несколько возможных значений:
- None : отсутствие автодополнения
- Suggest : предлагает варианты для ввода, но не дополняет
- Append : дополняет введенное значение до строки из списка, но не предлагает варианты для выбора
- SuggestAppend : одновременно и предлагает варианты для автодополнения, и дополняет введенное пользователем значение
Перенос по словам
Чтобы текст в элементе TextBox переносился по словам, надо установить
свойство WordWrap равным true. То есть если одно слово не умещается на
строке, то но переносится на следующую. Данное свойство будет работать
только для многострочных текстовых полей.
Ввод пароля
Также данный элемент имеет свойства, которые позволяют сделать из него
поле для ввода пароля. Так, для этого надо использовать PasswordChar и
UseSystemPasswordChar .
Свойство PasswordChar по умолчанию не имеет значение, если мы установим в
качестве него какой-нибудь символ, то этот символ будут отображаться при
вводе любых символов в текстовое поле.
Свойство UseSystemPasswordChar имеет похожее действие. Если установить
его значение в true, то вместо введенных символов в текстовом поле будет
отображаться знак пароля, принятый в системе, например, точка.
Событие TextChanged
Событие TextChanged срабатывает при изменении текста в элементе.
Например, поместим на форму кроме текстового поля метку и сделаем так,
чтобы при изменении текста в текстовом поле также менялся текст на
метке:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
textBox1.TextChanged += textBox1_TextChanged;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
label1.Text = textBox1.Text;
}
}
- https://metanit.com/sharp/windowsforms/4.8.php
- Свойство UseSystemPasswordChar имеет похожее действие. Если установить его значение в true, то вместо введенных символов в текстовом поле будет отображаться знак пароля, принятый в системе, например, точка.
- Событие TextChanged
- Из всех событий элемента TextBox следует отметить событие TextChanged, которое срабатывает при изменении текста в элементе. Например, поместим на форму кроме текстового поля метку и сделаем так, чтобы при изменении текста в текстовом поле также менялся текст на метке: