步骤 4:向每个标签添加一个 Click 事件处理程序

匹配游戏的运行原理如下所示:

  1. 当玩家单击其中一个带有隐藏图标的方块时,程序通过将图标颜色更改为黑色来向玩家显示该图标。

  2. 然后玩家单击另一个隐藏的图标。

  3. 如果图标互相匹配,则它们保持可见。如果不匹配,则两个图标都会再次隐藏。

为了使程序按此方式运行,您需要添加一个 Click 事件处理程序以更改所单击的标签的颜色。

向每个标签添加一个 Click 事件处理程序

  1. 转到 Windows 窗体设计器,然后单击第一个 Label 控件以将其选中。然后,在单击其他每个标签时按住 Ctrl 键,以将它们选中。确保选中每个标签。

  2. 然后,转到**“属性”窗口中的“事件”**页。向下滚动到 Click 事件,在框中键入“label_Click”,如下图所示。

    显示 Click 事件的“属性”窗口

    显示 Click 事件的“属性”窗口

  3. 按 Enter。IDE 将称为 label_Click() 的 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 As Label = 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
                Return
            End If
    
            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。您将不同的 Label 控件 Click 事件与单个事件处理程序方法挂钩,因此无论用户单击哪个标签,都调用同一方法。该方法需要知道单击了哪个标签,因此它使用该 Label 控件的名称“发送方”。该方法的第一行告诉程序,它并不只是一个对象,而是专门的 Label 控件,它使用名称“clickedLabel”访问其属性和方法。

    该方法首先检查是否已将**“clickedLabel”成功从对象转换(强制转换)为 Label 控件。如果不成功,它具有一个 null 值 (C#) 或 Nothing 值 (Visual Basic),您不需要执行该方法中的其余代码。接下来,该方法使用“ForeColor”**属性检查被单击的标签的文本颜色。如果已经为黑色,则该图标已被单击,因此该方法完成。(这就是返回语句的作用:它告诉程序停止执行该方法。)如果该图标尚未被单击,它会将其文本颜色更改为黑色。

  5. 保存并运行程序。您应该看到一个背景为蓝色的空窗体。在窗体中单击,其中一个图标应变为可见。继续在窗体中的不同位置单击。当单击图标时,它们应显示。

继续或查看