如何将双击事件添加到没有双击事件= P

的控件中

就像一个组合框!!!

有帮助吗?

解决方案

<sarcasm>使用更多感叹号 - 通常可以完成工作!</sarcasm>

但是,说真的,你不能。尝试检查简单的<!>“;点击<!>”;事件,然后查看两次连续点击之间的时间是否足够小。我不确定在哪里可以找到系统双击时序。尝试谷歌搜索。

但是,我会认真考虑将这种非标准行为添加到标准控件中。用户通常不会期望这样,所以他们很可能对此不满意。请记住 - 最好的用户界面是为用户提供最少惊喜的用户界面。更好地考虑另一种方法来做你想做的事。

其他提示

实际上,System.Windows.Forms.ComboBox有一个DoubleClick事件,它只是对你的编辑器隐藏了:

    // Summary:
    //     This event is not relevant for this class.
    [EditorBrowsable(EditorBrowsableState.Never)]
    [Browsable(false)]
    public event EventHandler DoubleClick;

我猜他们选择隐藏这个事件,因为它永远不会被召唤:)

简短的回答是你没有

答案很长,您订阅了Click事件,看看是否在过去的XXX毫秒内调用了另一个点击事件,,如本文所述

你不要双击它,如果你足够邪恶,你可以看起来像是双击它。

private void box_MouseDown(object sender, MouseEventArgs e)
{
      if (e.Button == MouseButtons.Left)
      {
         TimeSpan Current = DateTime.Now - LastClick;
         TimeSpan DblClickSpan =
         TimeSpan.FromMilliseconds(SystemInformation.DoubleClickTime);

         if (Current.TotalMilliseconds <= DblClickSpan.TotalMilliseconds)
         {
     // Code to handle double click goes here
         }

         LastClick = DateTime.Now;
      }
}

双击组合框

根据我的Reflector,System.Windows.Forms.ComboBox副本,来自程序集System.Windows.Forms,版本2.0.0.0,DOES有一个DoubleClick事件。

我无法找到方法(假设文本框吃掉了事件);我还看到一条说明,双击与此控件无关。我也没有找到从内部文本控件中捕获事件的方法

您可能想要重新考虑为什么要更改默认行为(即选择当前文本)。如果您过多地改变了预期的行为,那么您的应用程序将变得更加难以使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top