检测Winform中左键鼠标点击事件

3
我想做的是在每次点击winform时,在我的winform中显示调试行。然而,当我这样做时,什么也没发生。我知道如何使按钮/其他点击事件发生。但我需要的是能够在winform中的任何地方单击。

我已经在谷歌上搜索了一个小时,但找不到我的错误所在。据我所知,这段代码应该正确地检测到鼠标点击。此方法保存在form1.cs类中:
private void mouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
        Trace.WriteLine("Mouse clicked");
}

我已经尝试设置断点,但它们也没有被触发。我做错了什么?

非常抱歉问这种新手问题,但我对winform编程非常陌生。


3
必须有某些触发条件来执行 mouseClick() 方法。你是否设置了窗体的 OnClick 事件? - Jason
2
你展示了当鼠标点击发生时想要调用的方法,但是你是否实际上添加了一个事件处理程序来调用这个方法呢? - ColinE
1
该死。我还没有。我该怎么做? - N0xus
只需双击表单,它将为您创建鼠标点击处理程序。 - fhnaseer
@Hafeez,双击表单会为您创建一个Form_Load处理程序,而不是鼠标单击处理程序。 - Jason
我犯了一个愚蠢的错误。谢谢。 - N0xus
4个回答

9
如何添加事件处理程序:
public Form1()
{
    InitializeComponent();
    // This line should you place in the InitializeComponent() method.
    this.MouseClick += mouseClick;
}

9

使用Visual Studio内置的编辑器:

enter image description here

  1. 进入属性窗口(如果您没有看到它,请按Alt + Enter)。
  2. 选择事件图标(看起来像闪电)。
  3. 双击Click右侧的空ComboBox。
  4. 您将进入一个空方法,可以在其中放置您的代码。

4
方法本身是正确的。我认为你实际的问题是:你没有将这个方法添加到 MouseClick 事件中。
在 C# 中,以及大多数其他语言中,事件都是由事件处理程序处理的。Windows 表单和控件有事件来处理控件中发生的所有事件,例如 OnClickOnResize
您可以将方法附加到这些事件上,并且当实际事件发生时,这些方法将自动被调用。只需将以下行添加到您的窗体构造函数、Form_Load 方法、InitializeComponent 方法或其他类似方法中即可:
this.MouseClick += mouseClick;

现在,每当发生MouseClick事件时,您的mouseClick方法将自动被调用。

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接