步骤 5:为每面墙添加一个 MouseEnter 事件处理程序

如果每当用户的鼠标指针接触到墙时都将该指针发送回起点,则将使迷宫游戏更加有趣并更具挑战性。在您进一步阅读之前,请先考虑如何做到这一点。

为每面墙添加一个 MouseEnter 事件处理程序

  1. 转到 Windows 窗体设计器,然后单击任一新添加的墙。

  2. 转到**“属性”窗口,然后单击“事件”图标以显示此墙的事件。向下滚动到 MouseEnter 事件。键入文本 wall_MouseEnter,然后按 Enter,而不是双击该事件。“事件”图标和“属性”**窗口如下所示。

    “事件”图标

    “事件”图标

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

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

    说明说明

    如果您将事件名称直接键入“属性”窗口中的事件表时,则指示 IDE 创建一个具有该名称的事件处理程序并将其连接到控件的事件。您通常希望 IDE 选择事件名称,这是因为这些名称具有逻辑性,并且使用它们可使其他人能够更轻松地阅读并理解您的代码。当 IDE 为事件处理程序选择名称时,它会使用控件的名称和事件的名称。在此情况下,您不会更改墙的默认名称,这些默认名称为“label4”“label18”“label25”等。因此,如果单击名为“label12”的墙,则 IDE 会将事件处理程序命名为“label12_MouseEnter”。通过键入名称“wall_MouseEnter”,您将可以选择更适用的名称。这在为多个控件使用一个事件处理程序(本教程的后面将会遇到这种情况)时尤为重要。

  3. 按下 Enter 后,IDE 将为您添加一个新的事件处理程序,并会将其连接到此墙的 MouseEnter 事件。新添加的代码应在您的代码编辑器中出现,如下所示。在 Visual Basic 中,特定标签可能不是代码中显示的 Label8。

    Private Sub wall_MouseEnter() Handles Label8.MouseEnter
    
    End Sub
    
    private void wall_MouseEnter(object sender, EventArgs e)
    {
    
    }
    
  4. 接下来,添加一个对 MoveToStart() 方法的调用和一个说明该方法的注释。首先转到您的方法并添加语句 MoveToStart()。**“IntelliSense”**窗口将打开,并显示以下内容。

    “IntelliSense”窗口

    IntelliSense 窗口

    当您添加 MoveToStart() 方法时,IDE 会将此方法添加到**“IntelliSense”**窗口中。您添加的 XML 注释将显示在工具提示中。这在使用大量方法编写程序时很有用。

  5. 按 Tab 以指示 IntelliSense 完成方法名称。如果您编写的是 Visual C# 代码,请记住在该语句的结尾添加分号 (;)。然后在该语句的上方添加一个注释。您的代码应类似以下内容。在 Visual Basic 中,特定标签可能不是代码中显示的 Label8。

    Private Sub wall_MouseEnter() Handles Label8.MouseEnter
        ' When the mouse pointer hits a wall or enters the panel,
        ' call the MoveToStart() method.
        MoveToStart()
    End Sub
    
    private void wall_MouseEnter(object sender, EventArgs e)
    {
        // When the mouse pointer hits a wall or enters the panel,
        // call the MoveToStart() method.
        MoveToStart();
    }
    
  6. 保存并运行程序。将鼠标指针移动到已将事件处理程序连接到的墙的上方。(如果您不记得选择了哪一面墙,请将鼠标指针移动到每面墙的上方直到您找到正确的墙。)一旦鼠标指针接触该墙,它应会将鼠标指针发送回起点。

    接下来,您需要对其余的墙进行相同操作。可以为每面墙编写相同的 MouseEnter 事件处理程序。但此过程会很长,这将会在程序中生成多个相同的代码行并且难以做出更改。IDE 提供了一种用于将同一事件处理程序连接到所有墙的更简单的方法。

  7. 转到 Windows 窗体设计器,然后在**“编辑”菜单中单击“全选”**。

  8. 按住 Ctrl 键并单击**“完成”**标签以清除所选内容。这将使所有墙和该面板处于选定状态。

  9. 此时转到**“属性”**窗口上的事件表。向下滚动到 MouseEnter 事件并单击该事件旁边的编辑框。这将显示一个下拉箭头。如果单击此箭头,则会显示一个程序中所有事件处理程序的列表,可以为该事件选择这些事件处理程序。在此情况下,将显示您先前添加的 finishLabel_MouseEnter 事件处理程序和您刚编写的 wall_MouseEnter 事件处理程序,如下图所示。

    包含事件处理程序的 MouseEnter 事件

    有事件处理程序的 MouseEnter 事件

  10. 选择**“wall_MouseEnter”**。(如果选择了错误的事件处理程序或意外地添加了一个新的事件处理程序,则可以再次选择所有的墙和该面板,然后再选择正确的方法。)

  11. 此时,您的迷宫游戏应变得更加有趣了。尝试保存此游戏,然后再运行它。如果指针碰到墙,或者您先将指针移出迷宫,然后将其移回迷宫,则该程序会自动将指针重新定位到迷宫的起点。

继续或查看