Добавление обработчика событий Click к каждому элементу управления Label — КиберПедия 

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Добавление обработчика событий Click к каждому элементу управления Label

2021-06-30 81
Добавление обработчика событий Click к каждому элементу управления Label 0.00 из 5.00 0 оценок
Заказать работу

1. Откройте форму в конструкторе Windows Forms. В обозревателе решений выберите Form1.cs или Form1.vb. В строке меню выберите Вид > Конструктор.

2. Выберите первый элемент Label, чтобы выделить его. Затем, удерживая нажатой клавишу CTRL, выберите каждую из оставшихся меток. Убедитесь, что выбраны все метки.

3. Нажмите кнопку События на панели инструментов в окне Свойства, чтобы открыть страницу События в окне Свойства. Прокрутите вниз до события Click и введите label_Click в поле, как показано на следующем снимке экрана.

4. Нажмите клавишу ВВОД. Интегрированная среда разработки добавит обработчик событий Click, который называется label_Click(), в код и подключит его к каждому элементу управления Label в форме.

5. Добавьте остальную часть кода следующим образом:

private void label_Click (object sender, EventArgs e)

{ Label clickedLabel = sender as Label;

if (clickedLabel!= null)

{

     if (clickedLabel.ForeColor == Color.Black)

       return;

   clickedLabel.ForeColor = Color.Black;

}

 }

Примечание: При копировании и вставке блока кода label_Click() вместо его ввода вручную проследите за тем, что заменить существующий код label_Click(). В противном случае в коде появится дублирующий блок.
 

6. В строке меню выберите Файл > Сохранить все, чтобы сохранить ход выполнения, а затем в строке меню выберите Отладка > Начать отладку, чтобы запустить программу. Вы должны увидеть пустую форму с синим фоном. Выберите любую ячейку в форме, и один из значков станет видимым. Продолжайте выбирать различные ячейки формы. Значки будут отображаться при их выборе.

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

Добавление ссылок на метки

public partial class Form1: Form

{

Label firstClicked = null;

// secondClicked points to the second Label control

// that the player clicks

Label secondClicked = null;

1.

2.  Важно!
Используйте элемент управления языка программирования в правом верхнем углу этой страницы, чтобы просмотреть фрагмент кода на C# или Visual Basic.


Ссылочные переменные похожи на операторы, которые вы использовали для добавления объектов (таких как объекты Timer, List<T> и Random) в форму. Но эти операторы не приводят к появлению в форме двух дополнительных элементов управления Label, так как в них не используется ключевое слово new. Без ключевого слова new объект не создается. Именно поэтому firstClicked и secondClicked называются ссылочными переменными — они просто отслеживают (или ссылаются на) объекты Label.
Когда переменная не отслеживает объект, ей задается специальное зарезервированное значение — null в C# и Nothing в Visual Basic. Поэтому при запуске программы переменным firstClickedи secondClicked задается значение null или Nothing. Это означает, что переменные ничего не отслеживают.

3. Измените свой обработчик событий Click для использования новой ссылочной переменной firstClicked. Удалите последний оператор (label_Click()) в методе обработчика событий clickedLabel.ForeColor = Color.Black; и замените его последующим оператором if. (Не забудьте включить комментарий и весь оператор if).

4. C#

5. Копировать

/// <summary>

/// Every label's Click event is handled by this event handler

/// </summary>

/// <param name="sender"> The label that was clicked </param>

/// <param name="e"></param>

private void label_Click (object sender, EventArgs e)

{

Label clickedLabel = sender as Label;

if (clickedLabel!= null)

{

   // If the clicked label is black, the player clicked

   // an icon that's already been revealed --

   // ignore the click

   if (clickedLabel.ForeColor == Color.Black)

       return;

   // If firstClicked is null, this is the first icon

   // in the pair that the player clicked,

   // so set firstClicked to the label that the player

   // clicked, change its color to black, and return

   if (firstClicked == null)

   {

       firstClicked = clickedLabel;

       firstClicked.ForeColor = Color.Black;

       return;

   }

}

}

6.

7. Сохраните и выполните программу. Выберите одну из меток и появится ее значок.

8. Выберите следующую метку и обратите внимание, что ничего не происходит. Программа уже отслеживает первую метку, которую выбрал игрок, поэтому firstClicked не равно null в C# или Nothing в Visual Basic. Когда оператор if проверяет, имеет ли переменная firstClicked значение null или Nothing, он обнаруживает, что это не так, и не выполняет операторы в блоке if. Поэтому только первый выбранный значок становится черным, а другие значки остаются невидимыми, как показано на следующем рисунке.

**Игра "Подбери пару!"*,_ _отображающая один значок*

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

Добавление таймера

1. На панели элементов в конструкторе Windows Forms выберите Таймер (в категории Компоненты), а затем нажмите клавишу ВВОД или дважды щелкните таймер, чтобы добавить его в форму. Значок с именем таймера Timer1 должен появиться в пространстве под формой, как показано на следующем рисунке.

Таймер
 Примечание:Если панель элементов пуста, проверьте, что перед ее открытием был выбран конструктор форм, а не код формы.

2. Щелкните значок Timer1, чтобы выбрать таймер. В окне Свойства переключитесь с просмотра событий на просмотр свойств. Затем задайте для свойства Interval значение 750, но оставьте для свойства Enabled значение False. Свойство Interval задает время ожидания между тактами таймера или время активации события Tick. Значение 750 соответствует трем четвертям секунды (750 миллисекунд), по истечении которых происходит событие Tick. Метод Start() для запуска таймера будет вызван только после того, как игрок выберет вторую метку.

3. Выберите значок элемента управления "Таймер" в конструкторе Windows Forms, а затем нажмите клавишу ВВОД или дважды щелкните таймер, чтобы добавить пустой обработчик событий Tick. Замените код следующим кодом или вручную введите следующий код в обработчик событий.

private void timer1_Tick (object sender, EventArgs e)

{

  timer1.Stop();

firstClicked.ForeColor = firstClicked.BackColor;

secondClicked.ForeColor = secondClicked.BackColor;

   firstClicked = null;

secondClicked = null;

}
Обработчик события Tick выполняет три действия. Сначала он останавливает таймер, вызывая метод Stop(). Затем он использует две ссылочные переменные, firstClicked и secondClicked, чтобы снова сделать невидимыми значки двух меток, которые выбрал игрок. Наконец, он сбрасывает значения ссылочных переменных firstClicked и secondClicked на null. Это важный шаг, поскольку таким образом программа сбрасывает себя. Теперь она не отслеживает какие-либо элементы управления Label и снова готова к выбору метки игроком.
 Примечание: У объекта Timer есть метод Start(), который запускает таймер, и метод Stop(), который останавливает его. Если в окне Свойства свойству таймера Enabled задать значение True, он начнет отсчет сразу же, как только запустится программа. Но если в этом свойстве оставить значение False, отсчет не начнется, пока не будет вызван метод Start(). Как правило, таймер запускает событие Tick снова и снова, используя свойство Interval, чтобы определить, сколько миллисекунд ждать между тактами. Обратите внимание на вызов метода таймера Stop() внутри события Tick. Таймер переходит в режим однократного действия, означающий, что при вызове метода Start() он ожидает в течение заданного интервала, запускает одно событие Tick, а затем останавливается.

4. Чтобы увидеть работу нового таймера, перейдите к редактору кода и добавьте следующий код в начало и конец метода обработчика событий label_Click(). (Вы добавляете два оператора if в начало метода и три оператора в конец. Остальная часть метода остается неизменной.)

private void label_Click (object sender, EventArgs e)

{  if (timer1.Enabled == true)

   return;

Label clickedLabel = sender as Label;

if (clickedLabel!= null)

{  if (clickedLabel.ForeColor == Color.Black)

       return;

   if (firstClicked == null)

   {

       firstClicked = clickedLabel;

       firstClicked.ForeColor = Color.Black;

       return;

   }

   secondClicked = clickedLabel;

   secondClicked.ForeColor = Color.Black;

  timer1.Start();

}

}

5. Код в начале метода проверяет, запущен ли таймер, обращаясь к значению свойству Enabled. Таким образом, если игрок выбирает первый и второй элемент управления Label и таймер запускается, выбор третьего элемента управления Label ни к чему не приведет. Он также не позволяет проигрывателю быстро щелкнуть третий раз, прежде чем в игре можно будет щелкнуть первый раз.
Код в конце метода задает ссылочную переменную secondClicked таким образом, чтобы она отслеживала второй элемент управления Label, который щелкнул игрок, и задает этой метке черный цвет значка, чтобы сделать ее видимой. Затем таймер запускается в однократном режиме, то есть ожидает 750 миллисекунд и после этого вызывает одно событие Tick. Обработчик событий Tick таймера скрывает два значка и сбрасывает значения ссылочных переменных firstClicked и secondClicked; в результате форма будет снова готова к выбору игроком пары значков.

6. Сохраните и выполните программу. Выберите значок, и он станет видимым.

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

Игра работает правильно, пока игрок выбирает только пары значков, которые не совпадают. Но давайте посмотрим, что произойдет, когда игрок выберет совпадающую пару. Вместо того чтобы значки исчезали благодаря включению таймера (с помощью метода Start()), игра должна сбрасываться и больше не отслеживать метки с помощью ссылочных переменных firstClicked и secondClicked. Но цвета двух меток, которые были выбраны, не должны сбрасываться.


Поделиться с друзьями:

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.033 с.