题
如何将双击事件添加到没有双击事件= 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;
我猜他们选择隐藏这个事件,因为它永远不会被召唤:)
你不要双击它,如果你足够邪恶,你可以看起来像是双击它。
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事件。
组合框内的TextBox控件窃取/使用DoubleClick事件,因此您必须使用ComboBox上的Click事件来监听两次点击?
我无法找到方法(假设文本框吃掉了事件);我还看到一条说明,双击与此控件无关。我也没有找到从内部文本控件中捕获事件的方法
您可能想要重新考虑为什么要更改默认行为(即选择当前文本)。如果您过多地改变了预期的行为,那么您的应用程序将变得更加难以使用。
不隶属于 StackOverflow