Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Событие нажатия кнопки. Указание действия в случае события
События В реальном мире события происходят непрерывно, причем некоторые от нас совсем не зависят. Например, восход и закат солнца (хотел бы я посмотреть, как вы пытаетесь заставить солнце вставать и садиться). Другие события мы вызываем сами: скажем, заставляем громкоговоритель издавать звуки. Рассмотрим несколько событий, которые часто встречаются в мире компьютеров:
Очевидно, что, нажав на кнопку, мы хотим заставить компьютер выполнить определенное действие. (Если нет – зачем вообще ее трогать? ) Но компьютер ждет не только подтверждения, что нажатие этой кнопки имеет для вас какое-то значение, но и указания на действие, которое нужно выполнить.
Рассмотрим подробнее этот пример, поскольку нажатие на кнопку, возможно, является наиболее распространенным событием, и детально разберем порядок работы. Допустим, в вашей программе есть объект — кнопка с именем mrButton, на которой написано " Нажми меня". По ходу обсуждения попробуйте все делать сами. Для начала:
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 = " Вы нажали меня! "; } } Ваша программа еще выполняется?
Поскольку вы уже прочитали те страницы, где мы говорили про методы, то должны узнать основную структуру приведенного выше метода. Слово 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, хотя бы для того, чтобы выяснить, какая из кнопок мыши нажимается. В мире существуют сотни, а может быть, и тысячи, улиц, названных именем А.С. Пушкина. Но если на конверте указана одна из них, то как письмо находит своего получателя? Естественно, адрес состоит не только из улицы. Мы, по меньшей мере, добавляем название страны и города.
Очевидно, если мы укажем адрес на конверте:
Все библиотеки классов, которые предлагают разработчики Майкрософт, а также других организаций, помещаются в пространства имен. Поэтому, прежде чем использовать код из таких библиотек, необходимо понимать, как работать с пространствами имен.
События В реальном мире события происходят непрерывно, причем некоторые от нас совсем не зависят. Например, восход и закат солнца (хотел бы я посмотреть, как вы пытаетесь заставить солнце вставать и садиться). Другие события мы вызываем сами: скажем, заставляем громкоговоритель издавать звуки. Рассмотрим несколько событий, которые часто встречаются в мире компьютеров:
Очевидно, что, нажав на кнопку, мы хотим заставить компьютер выполнить определенное действие. (Если нет – зачем вообще ее трогать? ) Но компьютер ждет не только подтверждения, что нажатие этой кнопки имеет для вас какое-то значение, но и указания на действие, которое нужно выполнить.
Рассмотрим подробнее этот пример, поскольку нажатие на кнопку, возможно, является наиболее распространенным событием, и детально разберем порядок работы. Допустим, в вашей программе есть объект — кнопка с именем mrButton, на которой написано " Нажми меня". По ходу обсуждения попробуйте все делать сами. Для начала:
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; Просмотров: 736; Нарушение авторского права страницы