Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Событие нажатия кнопки. Указание действия в случае события



События

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

Рассмотрим несколько событий, которые часто встречаются в мире компьютеров:

  • нажатие на кнопку, изображенную на экране монитора;
  • истечение времени таймера;
  • перемещение мыши;
  • нажатие клавиши на клавиатуре.

Очевидно, что, нажав на кнопку, мы хотим заставить компьютер выполнить определенное действие. (Если нет – зачем вообще ее трогать? ) Но компьютер ждет не только подтверждения, что нажатие этой кнопки имеет для вас какое-то значение, но и указания на действие, которое нужно выполнить.

Рассмотрим подробнее этот пример, поскольку нажатие на кнопку, возможно, является наиболее распространенным событием, и детально разберем порядок работы. Допустим, в вашей программе есть объект — кнопка с именем mrButton, на которой написано " Нажми меня".

По ходу обсуждения попробуйте все делать сами. Для начала:

  • Запустите Visual C# Express.
  • Создайте новый проект приложения Windows: в меню File (" Файл" ) выберите Create project (" Создать проект" ) и затем тип проекта Windows Application (" Приложение Windows Forms" ).
  • В Visual C# Express откроется несколько файлов, где содержится " скелет" кода программы.
  • В окне обозревателя решений справа (в списке всех файлов) удалите файл с именем Form1.cs.
  • Дважды щелкните имя файла Program.cs и удалите весь автоматически вставленный " скелет" кода.
  • Чтобы создать программу с экземпляром кнопки, наберите следующий код в окне Program.cs так, как показано ниже (написание слов курсивом или жирным шрифтом можно не учитывать.

using System;

using System.Windows.Forms;

Class MyButtonClass: Form

{

private Button mrButton;

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

Public MyButtonClass()

{

mrButton = new Button();

mrButton.Text = " Нажми меня";

this.Controls.Add(mrButton);

}

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

Static void Main()

{

Application.Run(new MyButtonClass());

}

}

Выполните программу при помощи клавиши F5 (или щелкните по зеленой кнопке " Выполнить" ). Если возникнут сообщения об ошибках, тщательно проверьте, нет ли опечаток в коде. Если программа будет выполнена успешно, вы увидите форму с кнопкой " Нажми меня". Пока при нажатии на кнопку никаких действий происходить не будет. Конечно, вы ожидали другого результата, но все еще впереди.

Событие нажатия кнопки. Указание действия в случае события

Теперь мы должны задать метод, выполняющий действие при нажатии на кнопку. Такие методы называются обработчиками событий, поскольку они именно " обрабатывают" событие. В приведенном ниже примере выделенный маркером код обработчика события просто изменяет надпись на кнопке, поэтому он совсем короткий:

using System;

using System.Windows.Forms;

Class MyButtonClass: Form

{

private Button mrButton;

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

Public MyButtonClass()

{

mrButton = new Button();

mrButton.Text = " Нажми меня! ";

this.Controls.Add(mrButton);

}

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

Static void Main()

{

Application.Run(new MyButtonClass());

}

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

Void MyButtonClickEventHandler(object sender, EventArgs e)

{

mrButton.Text = " Вы нажали меня! ";

}

}

Ваша программа еще выполняется?

  • Остановите ее (нажмите на кнопку X в верхнем правом углу окна, в котором открыта форма).
  • Добавьте в программу выделенный код и нажмите на клавишу F5 для выполнения измененной программы.
  • Попробуйте теперь щелкнуть по кнопке " Нажми меня". И теперь ничего не происходит?!

Поскольку вы уже прочитали те страницы, где мы говорили про методы, то должны узнать основную структуру приведенного выше метода. Слово void означает, что по его завершении ничего не возвращается. Мы назвали этот метод MyButtonClickEventHandler.

Возможно, то, что вы видите, кажется немного странным. Вы понимаете, что в скобках присутствуют два параметра, но почему у них такие необычные типы (object sender, EventArgs e)? К сожалению, с методами обработчиков событий нельзя использовать собственные типы параметров. Когда у кнопки возникает событие " Click", она посылает сообщение о нем операционной системе, а та находит и вызывает соответствующий обработчик события. При вызове такого метода система сама определяет типы параметров и передает обработчику их значения. Это факт, с которым мы ничего поделать не можем.

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

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

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

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

Class MyButtonClass: Form

{

private Button mrButton;

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

Public MyButtonClass()

{

mrButton = new Button();

mrButton.Text = " Нажми меня";

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

this.Controls.Add(mrButton);

}

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

Static void Main()

{

Application.Run(new MyButtonClass());

}

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

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

Public MyButtonClass()

{

mrButton = new Button();

mrButton.Text = " Нажми меня";

mrButton.Top = 100;

mrButton.Left = 100;

mrButton.Height = 50;

mrButton.Width = 70;

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

this.Controls.Add(mrButton);

}

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

В мире существуют сотни, а может быть, и тысячи, улиц, названных именем А.С. Пушкина. Но если на конверте указана одна из них, то как письмо находит своего получателя? Естественно, адрес состоит не только из улицы. Мы, по меньшей мере, добавляем название страны и города.

Очевидно, если мы укажем адрес на конверте:

  • улица Пушкина, 17;
  • улица Пушкина, 82,

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

 

События

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

Рассмотрим несколько событий, которые часто встречаются в мире компьютеров:

  • нажатие на кнопку, изображенную на экране монитора;
  • истечение времени таймера;
  • перемещение мыши;
  • нажатие клавиши на клавиатуре.

Очевидно, что, нажав на кнопку, мы хотим заставить компьютер выполнить определенное действие. (Если нет – зачем вообще ее трогать? ) Но компьютер ждет не только подтверждения, что нажатие этой кнопки имеет для вас какое-то значение, но и указания на действие, которое нужно выполнить.

Рассмотрим подробнее этот пример, поскольку нажатие на кнопку, возможно, является наиболее распространенным событием, и детально разберем порядок работы. Допустим, в вашей программе есть объект — кнопка с именем mrButton, на которой написано " Нажми меня".

По ходу обсуждения попробуйте все делать сами. Для начала:

  • Запустите Visual C# Express.
  • Создайте новый проект приложения Windows: в меню File (" Файл" ) выберите Create project (" Создать проект" ) и затем тип проекта Windows Application (" Приложение Windows Forms" ).
  • В Visual C# Express откроется несколько файлов, где содержится " скелет" кода программы.
  • В окне обозревателя решений справа (в списке всех файлов) удалите файл с именем Form1.cs.
  • Дважды щелкните имя файла Program.cs и удалите весь автоматически вставленный " скелет" кода.
  • Чтобы создать программу с экземпляром кнопки, наберите следующий код в окне Program.cs так, как показано ниже (написание слов курсивом или жирным шрифтом можно не учитывать.

using System;

using System.Windows.Forms;

Class MyButtonClass: Form

{

private Button mrButton;

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

Public MyButtonClass()

{

mrButton = new Button();

mrButton.Text = " Нажми меня";

this.Controls.Add(mrButton);

}

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

Static void Main()

{

Application.Run(new MyButtonClass());

}

}

Выполните программу при помощи клавиши F5 (или щелкните по зеленой кнопке " Выполнить" ). Если возникнут сообщения об ошибках, тщательно проверьте, нет ли опечаток в коде. Если программа будет выполнена успешно, вы увидите форму с кнопкой " Нажми меня". Пока при нажатии на кнопку никаких действий происходить не будет. Конечно, вы ожидали другого результата, но все еще впереди.

Событие нажатия кнопки. Указание действия в случае события

Теперь мы должны задать метод, выполняющий действие при нажатии на кнопку. Такие методы называются обработчиками событий, поскольку они именно " обрабатывают" событие. В приведенном ниже примере выделенный маркером код обработчика события просто изменяет надпись на кнопке, поэтому он совсем короткий:

using System;

using System.Windows.Forms;

Class MyButtonClass: Form

{

private Button mrButton;

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

Public MyButtonClass()

{

mrButton = new Button();

mrButton.Text = " Нажми меня! ";

this.Controls.Add(mrButton);

}

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

Static void Main()

{

Application.Run(new MyButtonClass());

}

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


Поделиться:



Последнее изменение этой страницы: 2017-03-15; Просмотров: 722; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.051 с.)
Главная | Случайная страница | Обратная связь