DevExpress xtraTabbedMdiManager控件双击关闭MDI标签页

      DevExpress .net组件包中,有一个组件是xtraTabbedMdiManager,可以将MDI窗口显示为TabControl的样式,可以说非常实用。可惜的是,关闭标签页(即子MdiChild)不能通过双击来实现,这对于用惯了傲游等软件的朋友来说,有点不习惯。查看xtraTabbedMdiManager的事件,只有MouseDown,MouseUp等,并没有DoubleClick,好不爽。
      其实,转换一下思路,我们可以将连续的两次MouseDown事件模拟成一个双击事件,就可以解决上面的问题了,真是一点就破,技术上没有什么难度,且看代码吧:

// 通过MouseDown事件模拟双击关闭标签页
         private  DateTime m_LastClick  =  System.DateTime.Now;
        
private   void  xtraTabbedMdiManager1_MouseDown( object  sender, MouseEventArgs e)
        {
            
if  (e.Button  ==  MouseButtons.Left)
            {

                DateTime dt 
=  DateTime.Now;
                TimeSpan span 
=  dt.Subtract(m_LastClick);
                
if  (span.TotalMilliseconds  <   300 )   // 如果两次点击的时间间隔小于300毫秒,则认为是双击
                {
                    
if  ( this .MdiChildren.Length  >   1 )
                    {
                        
if  ( this .ActiveMdiChild  !=  m_MapForm)
                        {
                            
this .ActiveMdiChild.Close();
                        }
                    }
                    m_LastClick 
=  dt.AddMinutes( - 1 );
                }
                
else
                    m_LastClick 
=  dt;
            }
            
else   if  (e.Button  ==  MouseButtons.Right)
            {
                
// 弹出右键菜单
                 if  ( this .ActiveMdiChild  !=  m_MapForm)
                {
                    POINTAPI pt 
=   new  POINTAPI();
                    GetCursorPos(
ref  pt);
                    System.Drawing.Point p 
=   new  System.Drawing.Point(pt.x, pt.y);
                    popMenuCloseTab.ShowPopup(
this .barManager1, p);
                }
            }
        }

        
private   void  mnuCloseTab_ItemClick( object  sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            
if  ( this .ActiveMdiChild  !=  m_MapForm)
            {
                
this .ActiveMdiChild.Close();
            }
        }

在这里,我们认为如果两次点击时间间隔小于300毫秒,就认为是双击。注意,m_LastClick  =  dt.AddMinutes( - 1 ),这一行代码的作用是,表示双击完成,避免点击三次认为是双击了两次。

上面的代码还提供了点击右链弹出菜单功能。可以在右键菜单中加入你要的功能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值