当按下一次按钮时,我希望事件仅在双击按钮时发生,而不是让事件发生。遗憾的是,双击事件不会出现在IDE中的事件列表中。
任何人都知道解决这个问题的好方法吗?谢谢!
答案 0 :(得分:17)
没有标准按钮对双击没有反应。请参阅Button.DoubleClick事件的文档。它不会对双击做出反应,因为在Windows按钮中始终会对点击作出反应,而不会双击。
你讨厌你的用户吗?因为您将创建一个与系统中任何其他按钮不同的按钮,而某些用户永远不会想到这一点。
那说你必须创建一个从Button
派生到事件的单独控件(因为SetStyle是受保护的方法)
public class DoubleClickButton : Button
{
public DoubleClickButton()
{
SetStyle(ControlStyles.StandardClick | ControlStyles.StandardDoubleClick, true);
}
}
然后你必须在你的代码中手动添加DoubleClick
事件hanlder,因为它仍然不会出现在IDE中:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
doubleClickButton1.DoubleClick += new EventHandler(doubleClickButton1_DoubleClick);
}
void doubleClickButton1_DoubleClick(object sender, EventArgs e) {
}
}
答案 1 :(得分:0)
我曾经在我的对象上添加MouseDoubleClick事件,如:
this.pictureBox.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseDoubleClick);
答案 2 :(得分:0)
使用这个。代码有效。
public class DoubleClickButton : Button
{
public DoubleClickButton()
{
SetStyle(ControlStyles.StandardClick |
ControlStyles.StandardDoubleClick, true);
}
}
DoubleClickButton button = new DoubleClickButton();
button.DoubleClick += delegate (object sender, EventArgs e)
{
//codes
};
答案 3 :(得分:-1)
双击只是彼此在时间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
})