Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WinForms如何调用按钮上的双击事件?_Winforms_Events_Button_Double Click - Fatal编程技术网

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

WinForms如何调用按钮上的双击事件?,winforms,events,button,double-click,Winforms,Events,Button,Double Click,我希望事件只在双击按钮时发生,而不是在单击按钮一次时发生。遗憾的是,双击事件没有出现在IDE的事件列表中 有人知道这个问题的好办法吗?谢谢大家! 否标准按钮不会对双击做出反应。请参阅事件的文档。它不会对双击做出反应,因为在Windows中,按钮总是对单击做出反应,而从不对双击做出反应 你讨厌你的用户吗?因为您将创建一个按钮,该按钮的行为与系统中的任何其他按钮不同,而一些用户永远不会明白这一点 也就是说,您必须创建一个从按钮派生的单独控件来处理此事件(因为它是一个受保护的方法) 然后您必须在代码中

我希望事件只在双击按钮时发生,而不是在单击按钮一次时发生。遗憾的是,双击事件没有出现在IDE的事件列表中


有人知道这个问题的好办法吗?谢谢大家!

否标准按钮不会对双击做出反应。请参阅事件的文档。它不会对双击做出反应,因为在Windows中,按钮总是对单击做出反应,而从不对双击做出反应

你讨厌你的用户吗?因为您将创建一个按钮,该按钮的行为与系统中的任何其他按钮不同,而一些用户永远不会明白这一点

也就是说,您必须创建一个从
按钮派生的单独控件来处理此事件(因为它是一个受保护的方法)

然后您必须在代码中手动添加
双击
事件handler,因为它仍然不会显示在IDE中:

public partial class Form1 : Form {
    public Form1()  {
        InitializeComponent();
        doubleClickButton1.DoubleClick += new EventHandler(doubleClickButton1_DoubleClick);
    }

    void doubleClickButton1_DoubleClick(object sender, EventArgs e)  {
    }
}

双击只是在一个时间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
})

我曾经在我的对象上添加MouseDoubleClick事件,如:

this.pictureBox.MouseDoubleClick+=new System.Windows.Forms.MouseEventHandler(this.pictureBox\u MouseDoubleClick);

使用此选项。代码起作用

public class DoubleClickButton : Button
            {
                public DoubleClickButton()
                {
                    SetStyle(ControlStyles.StandardClick | 
ControlStyles.StandardDoubleClick, true);
                }
            }

 DoubleClickButton button = new DoubleClickButton();
 button.DoubleClick += delegate (object sender, EventArgs e)
        {
           //codes
        };

不要这样做!您将忽略用户的双击速度设置。如果你按照另一个答案从按钮派生并创建一个可双击的按钮,Windows会告诉你这是否是双击。这与doubléClickButton无关。你能告诉我如何链接这两个类DoubleClickButton和Form1,我的意思是,我们如何从不同的类设置Form1上按钮的控件样式?我不是专家,但setstyle也可以在没有继承的情况下使用。请参见此处的答案,假设我有一组需要双击事件的按钮。我必须一个接一个地添加它们吗?或者有一种方法可以获取所有组按钮并将它们分配到该方法中?我试图对此进行修改,但无法将事件设置为组按钮。请编辑您的答案以包含一些解释。只有代码的答案对教育未来的读者几乎没有什么作用。你的答案因质量低劣而被列入了审核名单。
public class DoubleClickButton : Button
            {
                public DoubleClickButton()
                {
                    SetStyle(ControlStyles.StandardClick | 
ControlStyles.StandardDoubleClick, true);
                }
            }

 DoubleClickButton button = new DoubleClickButton();
 button.DoubleClick += delegate (object sender, EventArgs e)
        {
           //codes
        };