combobox双击事件实现



方法一:实现双击 ComboBox 事件2012-04-13 10:52

 ComboBox 有双击事件,但是我们也知道永远也不会触发。至于为什么,问微软吧。
 
但是我们需要触发双击事件的时候怎么办呢?
 
 ComboBox 还有一个单击事件。那么我们就利用这个单击事件来达到双击事件的效果吧。
 
原理:
 
   1.触发单击事件时,获取系统鼠标的API 函数,即鼠标双击频率。
 
   2.判断鼠标在点击时的频率是否达成系统API 双击鼠标的限度。
 
   3.在判断里边你就可以写上你ComboBox 的双击事件的处理方式了。
 
说了这么多。那么看代码吧:
 
   * 首先加载进获取系统PAI函数的引用:
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "GetDoubleClickTime")]
public extern static int GetDoubleClickTime();//重写系统API函数获取鼠标双击的有效间隔
private DateTime dtCmbLastClick = DateTime.MinValue;//存储两次单击的时间间隔
 
   * 在ComboBox 单击事件里写上判断:
 
private void ComboBox1_MouseClick(object sender, MouseEventArgs e)
{
 if (DateTime.Now - dtCmbLastClick < new TimeSpan(0, 0, 0, 0, GetDoubleClickTime()))
   {
       // 双击事件处理方式
   }
 else
  {
   dtCmbLastClick = DateTime.Now;
  }
}
 
Is Ok


方法二:用两次单击的时候来判断一下就行了:可以参见如下的代码:  
   
  DateTime   lastDownTime   =   DateTime.Now;  
  private   void   comboBox1_MouseDown(object   sender,   MouseEventArgs   e)  
  {  
  TimeSpan   sp   =   DateTime.Now   -   lastDownTime;  
  if   (sp.Milliseconds   <=   SystemInformation.DoubleClickTime)  
  {  
  System.Console.WriteLine("DoubleClick");  
  }  
  else  
  {  
  System.Console.WriteLine("Click");  
  }  
  lastDownTime   =   DateTime.Now;  
  }  

方法三:亲测可用

private DateTime dtCmbLastClick = DateTime.MinValue;
private void comboBox1_MouseClick(object sender, MouseEventArgs e)
{
if (DateTime.Now - dtCmbLastClick < new TimeSpan(0, 0, 0, 0, 200))
comboBox1_MouseDoubleClick(sender, e);
else
dtCmbLastClick =DateTime.Now;
}
private void comboBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
MessageBox.Show("doubleClick !");
}

转载于:https://www.cnblogs.com/qixinjian/p/5556331.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值