Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_C#.doc
Скачиваний:
38
Добавлен:
15.11.2018
Размер:
2.72 Mб
Скачать

17.2 Элементы управления на форме

Усовершенствуйте приложение Hello, добавив в него кнопку и предусмотрев обработку событий, связанных с этой кнопкой.

После добавления кнопки в классе Form1 появилось новое поле button1, предназначенное для хранения ссылки на кнопку:

private System.Windows.Forms.Button button1;

Кнопка создается как объект класса System.Windows.Forms.Button. Самые большие изменения затрагивают метод InitializeComponent, отвечающий за инициализацию формы. Теперь в нем появились строки, отвечающие за создание и размещение кнопки внутри формы:

Прежде всего, метод InitializeComponent создает кнопку как объект класса System.Windows.Forms.Button, и сохраняет ссылку на этот объект в поле button1 для дальнейшего использования:

this.button1 = new System.Windows.Forms.Button();

После этого начинается процесс размещения кнопки на поверхности формы. Этот процесс начинается с вызова метода SuspendLayout:

this.SuspendLayout();

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

После того как все необходимые компоненты будут размещены, механизм генерации упомянутых выше сообщений включается снова при помощи метода ResumeLayout:

this.ResumeLayout(false);

В промежутке между вызовами методов SuspendLayout и ResumeLayout программа добавляет и размещает элементы управления, а также настраивает их свойства.Первым делом в форму добавляется кнопка:

this.button1.Location = new System.Drawing.Point(200, 16);

Для рисования кнопки внутри окна формы в определенной позиции программа вызывает метод System.Drawing.Point. Координаты места расположения кнопки по горизонтальной  и вертикальной оси координат передаются методу через параметры.

Далее программа устанавливает свойства кнопки:

this.button1.Name = "button1"; this.button1.TabIndex = 0; this.button1.Text = "Сообщение";

Свойство Name хранит идентификатор кнопки. При необходимости этот идентификатор можно отредактировать.

В свойстве Text хранится надпись на кнопке. Что же касается свойства TabIndex, то оно приобретает значение, когда в форме имеется несколько элементов управления, таких как кнопки, поля редактирования, списки и т.д. Это свойство задает порядок выбора элементов в окне формы при использовании клавиши табуляции. Напомним, что с помощью клавиши табуляции можно перемещать фокус ввода между элементами управления обычных диалоговых окон Microsoft Windows.

После добавления кнопки и настройки ее свойств метод InitializeComponent задает свойства самой формы:

this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 273); this.Controls.AddRange(   new System.Windows.Forms.Control[]   {      this.button1   } );

Свойство AutoScaleBaseSize задает базовые размеры, которые используются формой для автоматического масштабирования. При этом за основу берется размер системного шрифта.

При помощи свойства ClientSize программа определяет размеры так называемой клиентской области окна (client area) нашей формы. Эта область не включает в себя заголовок окна, рамку и полосы прокрутки.

И, наконец, при помощи метода Controls.AddRange программа добавляет в форму контейнер с массивом System.Windows.Forms.Control[] элементов управления. В нашем случае этот массив состоит из одной кнопки с идентификатором button1.

Последнее, что делает метод InitializeComponent, это настройка свойств формы Name и Text:

this.Name = "Form1"; this.Text = "Form1";

Первое из них задает имя (идентификатор) формы, а второе — текстовую строку, отображаемую в заголовке формы.

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