如何让所有点击事件都传递给事件处理程序?我发现如果你点击得太快,它会认为你是双击而不会将点击发送到事件处理程序。是否有一种方法可以获得所有的点击事件?
如何让所有点击事件都传递给事件处理程序?我发现如果你点击得太快,它会认为你是双击而不会将点击发送到事件处理程序。是否有一种方法可以获得所有的点击事件?
using System;
using System.Windows.Forms;
class MyPictureBox : PictureBox {
public MyPictureBox() {
this.SetStyle(ControlStyles.StandardDoubleClick, false);
}
}
请注意,这种方法不适用于包装现有本机 Windows 控件的 .NET 类,如 TextBox、ListBox、TreeView 等。其底层配置是WNDCLASSEX.style 成员中的 CS_DBLCLKS 样式标志。设置该样式标志的代码嵌入在Windows中,无法更改。您需要进行其他类型的操作才能将双击事件转换为单击事件。通过重写 WndProc() 方法可以实现此目的,以下是一个 TextBox 的示例:
using System;
using System.Windows.Forms;
class MyTextBox : TextBox {
protected override void WndProc(ref Message m) {
// Change WM_LBUTTONDBLCLK to WM_LBUTTONCLICK
if (m.Msg == 0x203) m.Msg = 0x201;
base.WndProc(ref m);
}
}
如果你想对其他控件进行此操作,只需更改类名即可。通过挪用Winforms使其按照你的意愿工作不需要太多代码,只需要Petzold :)
您希望使用控件的MouseDown事件而不是Click事件。每次鼠标在该控件上“按下”时,都会调用MouseDown。如果系统认为这是双击,则可能不会调用Click。相反,将引发DoubleClick事件。
我认为你想要计算所有的点击次数。 如果你想要计算点击次数,那么设置一个计数器变量并在点击事件中增加它。 也许这会对你有所帮助....