我希望仅在双击按钮时才发生事件,而不是在单击按钮时发生事件。遗憾的是,双击事件没有出现在 IDE 的事件列表中。
有谁知道解决这个问题的好方法?谢谢!
我希望仅在双击按钮时才发生事件,而不是在单击按钮时发生事件。遗憾的是,双击事件没有出现在 IDE 的事件列表中。
有谁知道解决这个问题的好方法?谢谢!
不,标准按钮不会对双击做出反应。请参阅Button.DoubleClick事件的文档。它不会对双击做出反应,因为在 Windows 中,按钮总是对点击做出反应,而不是对双击做出反应。
你讨厌你的用户吗?因为您将创建一个与系统中任何其他按钮的行为不同的按钮,而某些用户永远不会明白这一点。
也就是说,您必须创建一个从Button
事件派生到此的单独控件(因为SetStyle是受保护的方法)
public class DoubleClickButton : Button
{
public DoubleClickButton()
{
SetStyle(ControlStyles.StandardClick | ControlStyles.StandardDoubleClick, true);
}
}
然后您必须DoubleClick
在代码中手动添加事件处理程序,因为它仍然不会显示在 IDE 中:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
doubleClickButton1.DoubleClick += new EventHandler(doubleClickButton1_DoubleClick);
}
void doubleClickButton1_DoubleClick(object sender, EventArgs e) {
}
}
用这个。代码有效。
public class DoubleClickButton : Button
{
public DoubleClickButton()
{
SetStyle(ControlStyles.StandardClick |
ControlStyles.StandardDoubleClick, true);
}
}
DoubleClickButton button = new DoubleClickButton();
button.DoubleClick += delegate (object sender, EventArgs e)
{
//codes
};
我曾经在我的对象上添加 MouseDoubleClick 事件,例如:
this.pictureBox.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseDoubleClick);
双击只是时间 t 内的两个常规单击事件。
这是假设 t = 0.5 秒的一些伪代码
button.on('click' , function(event) {
if (timer is off or more than 0.5 milliseconds)
restart timer
if (timer is between 0 and 0.5 milliseconds)
execute double click handler
})