Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
45666666666666666666666666666666666666666666666....rtf
Скачиваний:
2
Добавлен:
10.07.2019
Размер:
224.9 Кб
Скачать

Void MyButtonClickEventHandler( object sender, EventArgs e )

{

mrButton.Text = "You clicked me!";

}

}

Программа по-прежнему выполняется?

Остановите ее (нажмите кнопку X в верхнем правом углу окна, в котором открыта форма)

Добавьте выделенный жирным код в вашу программу и нажмите клавишу F5 для выполнения измененной программы.

Попробуйте теперь нажать кнопку «Click me» Бррр! И теперь ничего?

Если вы прочитали главу про методы, то узнаете основную структуру приведенного выше метода. Слово «void» означает, что по завершении метода ничего не возвращается. Словом «MyButtonClickEventHandler» мы назвали этот метод.

Тогда все становится немного странным. Возможно вы поймете, что в скобках присутствует два параметра, но они не подходят: ( object sender, EventArgs e ). Мне не хотелось бы сообщать вам такие неприятные новости, но с методами обработчиков событий нельзя использовать собственные типы параметров. При вызове такого метода система сама автоматически подставляет определенные параметры и ничего с этим поделать мы не сможем.

Поэтому придется просто смириться и всегда использовать ожидаемые типы параметров с обработчиком событий. В случае с событием нажатия на кнопку и многими другими, подставляемые параметры имеют тип «object» и «EventArgs». В приведенном выше примере мы выбрали имена параметров «sender» и «e», но мы могли бы выбрать любые имена — для компьютера важны имена типов этих параметров. Например, следующий код будет работать в точности так же, как и код в примере выше. Если хотите, можете сами проверить это, изменив имена параметров в вашей программе на «x» и «y».

Void MyButtonClickEventHandler( object X, EventArgs y )

{

mrButton.Text = "You clicked me!";

}

В первом параметре обычно содержится некоторая информация об объекте, инициировавшем событие. Второй параметр относится к данным о самом событии.

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

Подключение метода обработчика событий к событию

Вы удивляетесь почему ничего не происходит при нажатии на кнопку? Дело в том, что указанный метод вызывается только тогда, когда мы свяжем с ним событие нажатия на кнопку. В программе нужно указать, что при нажатии на кнопку необходимо перейти к определенному обработчику событий.

Это абсолютно очевидно, когда в программе используются разные кнопки и несколько обработчиков событий. Откуда компьютеру будет известно, какой метод выполнять при нажатии на каждую кнопку?

Код для связывания события объекта с методом обработчика события выглядит тоже несколько странно. И мы опять выделим его жирным.

using System;

using System.Windows.Forms;

class MyButtonClass : Form

{

private Button mrButton;

// Метод-конструктор

public MyButtonClass()

{

mrButton = new Button();

mrButton.Text = "Click me";

mrButton.Click += new System.EventHandler(MyButtonClickEventHandler);

this.Controls.Add(mrButton);

}

// Основной метод

static void Main()

{

Application.Run( new MyButtonClass() );

}

// Метод обработчика событий