C#. Windows Forms. Компонент Label. Программное создание элемента управления Label. Класс MessageBox

Компонент Label. Программное создание элемента управления Label. Класс MessageBox. Перечисление DialogResult


Содержание


Поиск на других ресурсах:

1. Компонент Label. Свойства компонента Label

Компонент типа Label представляет собой статический текст на мониторе. На рисунке 1 показано размещение компонента Label на панели элементов в системе Microsoft Visual Studio 2022.

C#. Windows Forms. Компонент Label. Размещение компонента Label на форме

Рисунок 1. Компонент Label. Размещение компонента Label на форме

Основные свойства компонента Label приведены ниже.

Свойство

Описание

Name Название экземпляра (объекта) типа Label.
Anchor Задает края контейнера, к которому привязан определенный элемент управления. Когда элемент управления привязан к краю, расстояние между ближайшим краем элемента управления и указанным краем будет оставаться постоянным.
AutoEllipsis Если AutoEllipsis = True, то включается автоматическая обработка текста, выходящего за пределы ширины метки (рисунок 2). Данное свойство действует только если свойство AutoSize = False.

C#. Windows Forms. Компонент Label. Влияние свойства AutoEllipsis на вид текста

Рисунок 2. Влияние свойства AutoEllipsis на вид текста «Hello world!»: a) AutoEllipsis = True; b) AutoEllipsis = False

AutoSize Если AutoSize=True, ширина компонента типа Label автоматически изменяется в зависимости от размера шрифта (рисунок 3). Если AutoSize=False, можно задавать фиксированные размеры границ элемента Label, в которые будет вписываться текст.

C#. Windows Forms. Компонент Label. Влияние свойства AutoSize на вид текста

Рисунок 3. Влияние свойства AutoSize на вид текста «Hello world»: a) AutoSize = True;     b) AutoSize = False

BackColor Цвет фона области, в которой отображается элемент управления типа Label.
BorderStyle Вид границы прямоугольной области элемента управления Label.
ContextMenuStrip Свойство, содержащее ссылку на контекстное меню, вызываемое при нажатии правой кнопки мышки в области элемента управления Label. Чтобы использовать контекстное меню, это меню должно быть предварительно сформировано. Для формирования контекстного меню используется элемент управления ContextMenuStrip.
Cursor Определяет вид курсора мышки, когда указатель мышки находится в области окна элемента управления Label.
Dock Определяет, какие границы элемента управления связаны с контейнером.
Enabled Определяет, заблокирован ли элемент управления. Если Enabled = True, то элемент управления не заблокирован, например может реагировать на клики мышкой.
Font Вид шрифта текста (размер, параметры текста)
ForeColor Цвет переднего плана компонента – это цвет отображаемого текста.
GenerateMember Если GenerateMember=True, то генерируется переменная для этого компонента. Имя переменной устанавливается в значение, определенное в поле Name. Эта опция необходима, когда элемент управления типа Label используется в программном коде для динамически выводимой информации. Если элемент управления Label используется только для отображения неизменяемого текста, целесообразно установить GenerateMember=False с целью экономии памяти. Чтобы просмотреть результат действия этого свойства, перейдите в часть Form1.Designer.cs класса формы, в которой отображаются все элементы управления формы.
Image Ссылка на изображение, которое может быть установлено для этого элемента управления. Изображение отображается по тексту.
Location Координата (X, Y) верхнего-левого угла элемента управления.
Locked Если Locked=True, невозможно изменять позицию и размер элемента управления на форме (позиция блокируется) во время проектирования.
MaximumSize Задает максимально-возможный размер (Width, Height) элемента управления. Если значение MaximumSize=(0, 0), то элемент управления может принимать произвольный размер.
MinimumSize Задаёт минимально возможный размер (Width, Height) элемента управления. Если значение MinimumSize=(0, 0), то элемент управления может принимать произвольный размер.
Modifiers Задает модификатор доступа для переменной (экземпляра) типа Label, при условии, что GenerateMember=True.
Size Размер элемента в пикселах
TabIndex Порядковый номер в изменяющихся позициях табуляции с помощью клавиши TAB.
Text Текст, который ассоциируется с элементом управления.
TextAlign Задает позицию текста внутри области, которая предназначена для отображения элемента управления Label. Данная опция имеет смысл, если AutoSize=false.
UseWaitCursor Если UseWaitCursor=True, то свойство Cursor=WaitCursor.
Visible Если Visible=False, то элемент управления невидим на форме.

 

2. События компонента Label

События, на которые реагирует компонент Label, описываются в следующей таблице:

Событие Описание
Click Клик с помощью мышки на элементе управления Label
DoubleClick Двойной клик мышкою на элементе управления Label
MouseClick Клик с помощью мышки на элементе управления Label. В отличие от события Click позволяет получить более полную информацию о клике: какая клавиша мышки нажата, координата (x, y) нажатия и прочее. Вся информация получается из класса MouseEventArgs.
MouseDoubleClick Двойной клик мышкой на элементе. По сравнению с DoubleClick добавляет экземпляр класса MouseEventArgs, содержащий всю необходимую информацию о сделанном клике (координата (x, y), какая клавиша нажата и т.д.).
Paint Используется для рисования графики в области элемента управления.

 

3. Программное создание элемента управления Label. Пример

На форме нужно разместить кнопку, например button1 и в обработчике Click этой кнопки набрать следующий текст:

...

private void button1_Click(object sender, EventArgs e)
{
  // Программное создание элемента управления типа Label
  // 1. Объявить экземпляр типа Label
  Label myLabel = new Label();

  // 2. Установить родительский класс,
  //    в нашем случае родительский класс - это Form.
  //    Свойство Parent имеет тип Control
  myLabel.Parent = this.Parent;

  // 3. Установить текст метки
  myLabel.Text = "Hello!";

  // 4. Установить размещение на форме в точке (10, 80)
  myLabel.Location = new Point(10, 80);

  // 5. Свойство AutoSize
  myLabel.AutoSize = true;

  // 6. Задать имя экземпляра
  myLabel.Name = "myLabel";

  // 7. Добавить в свойство Controls класса Form.
  //   Это свойство класс Form наследует от класса Control.
  //   Тип свойства Controls - ControlCollection,
  //   то есть класс ControlCollection определен в классе Control.
  //   Свойство Controls - это набор дочерних элементов управления.
  this.Controls.Add(myLabel);
}

...

После запуска программы и нажатия на кнопке появится метка Label.

 

4. Класс MessageBox. Назначение. Пример

Статический класс MessageBox представляет диалоговое окно, в котором можно выводить информацию (рисунок 4). Основным методом класса, выводящим диалоговое окно, является метод Show(), который имеет много перегруженных реализаций.

C#. Windows Forms. Окно вызова метода Show() класса MessageBox

Рисунок 4. Окно, которое открывается в результате вызова метода Show() класса MessageBox (один из случаев)

Использование класса эффективно, когда нужно выводить быстрые сообщения «на лету» с базовым набором стандартных кнопок и их быстрой обработкой. Таким образом, исчезает потребность в создании излишних мелких диалоговых форм, которые усложняют восприятие структуры всего проекта.

Для демонстрации использования класса MessageBox нужно разместить кнопку на форме (например, button2) и запрограммировать обработчик события клика на этой кнопке.

...

private void button2_Click(object sender, EventArgs e)
{
  // Класс MessageBox - представляет диалоговое окно, в котором
  // выводятся известные сообщения с подтверждением
  // ответа, например, Ok, No и т.д.

  // 1. Вызов простого окна с текстом
  MessageBox.Show("This is a message");

  // 2. Вызов еще одного окна с заглавием
  MessageBox.Show("This is a message", "This is a caption");

  // 3. Вызов окна с кнопками Yes, No, Cancel
  // 3.1. Создать кнопки Yes, No, Cancel
  MessageBoxButtons mbb;
  mbb = MessageBoxButtons.YesNoCancel;

  // 3.2. Вывести окно и проверить ответ пользователя
  DialogResult dr;
  dr = MessageBox.Show("This is YesNoCancel message.", "Title", mbb);

  if (dr == DialogResult.Yes)
    MessageBox.Show("Your choice: Yes");
  else
  if (dr == DialogResult.No)
    MessageBox.Show("Your choice: No");
  else
    MessageBox.Show("Your choice: Cancel");

  // 3.3. Вывести окно с заглавием и проверить ответ - другой вариант
  mbb = MessageBoxButtons.OKCancel;
  dr = MessageBox.Show("Please, select OK or Cancel", "OK-Cancel window", mbb);

  if (dr == DialogResult.OK)
    MessageBox.Show("You select OK");
  else
    MessageBox.Show("You select Cancel");
}

...

Как видно из приведенного выше примера, работа методов класса MessageBox сочетается с использованием перечисления DialogResult. В этом перечислении объявляются константы, соответствующие кодам базовых стандартных кнопок, используемых в интерфейсе Windows. К примеру, описываются кнопки Ok, Cancel, Yes и другие.

 


Связанные темы