彩票走势图

DevExpress xtraTabbedMdiManager如何实现双击关闭MDI标签页

原创|其它|编辑:郝浩|2012-10-11 11:32:09.000|阅读 1824 次

概述:.net组件包中,有一个组件是xtraTabbedMdiManager,可以将MDI窗口显示为TabControl的样式,可以说非常实用。可惜的是,关闭标签页(即子MdiChild)不能通过双击来实现,这对于用惯了傲游等软件的朋友来说,有点不习惯。查看xtraTabbedMdiManager的事件,只有MouseDown,MouseUp等,并没有DoubleClick,好不爽。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

.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),这一行代码的作用是,表示双击完成,避免点击三次认为是双击了两次。

上面的代码还提供了点击右链弹出菜单功能。可以在右键菜单中加入你要的功能。



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP