Поделиться через


Шаг 4. Добавление к каждой метке обработчика событий щелчка мышью

Игра "Подбери пару!" работает следующим образом.

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

  2. После этого игрок щелкает другой скрытый значок.

  3. Если значки совпадают, они остаются видимыми.Если нет, оба значка снова скрываются.

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

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

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

  2. Затем перейдите на страницу События в окне Свойства.Прокрутите вниз до события Click и введите label_Click в поле, как показано на следующем рисунке.

    Окно свойств, отображающее событие Click

    Окно свойств с событием Click

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

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

    ''' <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>
    ''' <remarks></remarks>
    Private Sub label_Click(ByVal sender As System.Object, 
                            ByVal e As System.EventArgs) Handles Label9.Click, 
        Label8.Click, Label7.Click, Label6.Click, Label5.Click, Label4.Click, 
        Label3.Click, Label2.Click, Label16.Click, Label15.Click, Label14.Click, 
        Label13.Click, Label12.Click, Label11.Click, Label10.Click, Label1.Click
    
        Dim clickedLabel = TryCast(sender, Label)
    
        If clickedLabel IsNot Nothing Then
    
            ' If the clicked label is black, the player clicked 
            ' an icon that's already been revealed -- 
            ' ignore the click
            If clickedLabel.ForeColor = Color.Black Then Exit Sub
    
            clickedLabel.ForeColor = Color.Black
        End If
    End Sub
    
    /// <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;
    
            clickedLabel.ForeColor = Color.Black;
        }
     }
    
    ПримечаниеПримечание

    Возможно, вы узнали object sender в верхней части обработчика событий из руководства "Создание математической головоломки".Вы подключили различные события Click элемента управления Label к одному методу обработчика событий, поэтому один и тот же метод вызывается независимо от того, какую метку щелкнет пользователь.Методу требуется знать, какую метку щелкнули, поэтому для элемента управления Label используется имя sender.Первая строка метода сообщает программе, что это не просто объект, а элемент управления Label, для доступа к свойствам и методам которого используется имя clickedLabel.

    Этот метод сначала проверяет, было ли успешно выполнено преобразование (приведение) clickedLabel из объекта в элемент управления Label.Если операция завершилась неудачей, его значение будет null (C#) или Nothing (Visual Basic) и оставшаяся часть кода метода не будет выполнена.Затем метод с помощью свойства ForeColor проверяет цвет текста метки, которую щелкнули.Если она уже черная, значит значок щелкнули и, следовательно, метод выполнен.(Это и делает оператор возврата. Он сообщает программе, что требуется остановить выполнение метода.) Если значок еще не был щелкнут, его цвет изменится на черный.

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

Продолжить или повторить пройденный материал