Интерфейс программы должен быть интуитивно понятным и по возможности простым. Часто повторяющиеся действия не должны требовать от пользователя выполнения сложных последовательностей операций.
Заготовка шаблона обработчика события формируется двойным щелчком на поле, расположенном справа от имени соответствующего события на вкладке Events окна свойств, при этом появляется вкладка окна редактора кода с заготовкой соответствующего обработчика (вкладка Events отображается в окне свойств при щелчке на кнопке с желтой молнией, как показано на рис. 14.5).
Для каждого класса определен свой набор событий, на которые он может реагировать. Наиболее часто используемые события:
□ Activated — получение формой фокуса ввода;
□ Click, DoubleClick — одинарный и двойной щелчки мышью;
□ Closed — закрытие формы;
□ Load — загрузка формы;
□ KeyDown, KeyUp — нажатие и отпускание любой клавиши и их сочетаний;
□ KeyPress — нажатие клавиши, имеющей ASCII-код;
□ MouseDown, MouseUp — нажатие и отпускание кнопки мыши;
|
|
□ MouseMove — перемещение мыши;
□ Paint — возникает при необходимости прорисовки формы.
В листинге 14.2 приведен текст программы, сформированной средой после размещения на форме компонентов, представленных на рис. 14.5, и выборе для кнопки события Click, а для поля ввода — события KeyPress. Из листинга для удобства восприятия удалены лишние элементы.
Листинг 14.2. Шаблон приложения с двумя компонентами и заготовками обработчиков событий
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication1
{
public class Form1: System.Windows.Forms.Form // 0
{
private System.Windows.Forms.TextBox textBox1; // 1
private System.Windows.Forms.Button button1; // 2
private System.ComponentModel.Container components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose(bool disposing) {/*... */}
#region Windows Form Designer generated code
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox(); // 3
this.button1 = new System.Windows.Forms.Button(); // 4
this.SuspendLayout(); // 5
//
// textBox1 //
this.textBoxl.Location = new System.Drawing.Point(24, 16); this.textBoxl.Name = "textBox1"; this.textBoxl.Size = new System.Drawing.Size(240, 20);
this.textBoxl.Tablndex = 0; this.textBoxl.Text = "textBox1";
this.textBoxl.KeyPress += new // 6
System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress); //
// button1 //
this.button1.Location = new System.Drawing.Point(192, 80);
this.button1.Name = "button1";
this.button1.Tablndex = 1;
this.button1.Text = "button1";
this.buttonl.Click += new //7
System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 126);
this.Controls.Add(this.button1); // 8
this.Controls.Add(this.textBox1); // 9
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false); //10
}
#endregion
static void Main()
{
Application.Run(new Form1());
}
private void buttonl_Click(object sender, System.EventArgs e)
{
// 11
}
private void textBox1_KeyPress(object sender,
System.Windows.Forms.KeyPressEventArgs e)
{
// 12
}
}
}
Рассмотрим текст программы. В операторах 1 и 2 в класс формы добавляются два закрытых поля: строка ввода типа TextBox и кнопка типа Button. Эти типы определены в пространства имен System.Windows.Forms, которое подключается в соответствующей директиве using, поэтому можно записать эти и соседние строки проще:
|
|
using System;
using System.Drawing;
using System;
public class Form1: Form // 0
{
private TextBox textBoxl; // 1
private Button button1; // 2
private Container components = null;
Чаще всего программист изменяет имена, присваиваемые элементам средой, более осмысленными. Это можно сделать, задав новое значение свойства Name элемента.