WinForms如何在按钮上调用双击事件?

时间:2012-11-21 04:15:35

标签: winforms events button double-click

当按下一次按钮时,我希望事件仅在双击按钮时发生,而不是让事件发生。遗憾的是,双击事件不会出现在IDE中的事件列表中。

任何人都知道解决这个问题的好方法吗?谢谢!

4 个答案:

答案 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
})