DevExpress xtraTabbedMdiManager控件双击关闭MDI标签页
2007-03-14 09:41
477 查看
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),这一行代码的作用是,表示双击完成,避免点击三次认为是双击了两次。
上面的代码还提供了点击右链弹出菜单功能。可以在右键菜单中加入你要的功能。
其实,转换一下思路,我们可以将连续的两次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),这一行代码的作用是,表示双击完成,避免点击三次认为是双击了两次。
上面的代码还提供了点击右链弹出菜单功能。可以在右键菜单中加入你要的功能。
相关文章推荐
- DevExpress xtraTabbedMdiManager控件双击关闭MDI标签页
- DevExpress xtraTabbedMdiManager控件双击关闭MDI标签页
- 使用DevExpress.XtraTabbedMdi.XtraTabbedMdiManager控件来加载MDI窗体
- Dev控件使用 - 使用xtraTabbedMdiManager控件制作浏览器的标签效果
- XtraTabbedMdiManager控件
- DevExpress 使用 XtraTabbedMdiManager 控件以 Tab样式加载 Mdi窗体并合并 RibbonControl 解决方案
- DevExpress 使用 XtraTabbedMdiManager 控件以 Tab样式加载 Mdi窗体并合并 RibbonControl 解决方案
- DevExpress 使用 XtraTabbedMdiManager 控件以 Tab样式加载 Mdi窗体并合并 RibbonControl 解决方案
- XtraTabbedMdiManager右侧关闭按钮关闭所有页面(导航页除外)
- DEV开发之控件XtraTabbedMdiManager
- DevExpress组件之——XtraTabbedMdiManager
- xtraTabbedMdiManager 双击最大化和关闭后返回主界面 z
- C# 命名空间"DevExpress.XtraReports.UserDesigner"中不存在类型或命名空间名称"XRTabbedMdiManager"。是否缺少程序集引用?
- DevExpress.XtraBars.Ribbon控件使用系列 (2)创建ApplicationMenu
- ExtJS4.1 ExtJS TabPanel 双击标签关闭该页
- QTabWidget标签实现双击关闭(转)
- QTabWidget标签实现双击关闭
- DevExpress.XtraLayout.LayoutControl 动态添加控件
- 具有双击或者右击关闭标签页功能的chrome扩展程序汇总
- c#如何实现双击TabContrl关闭Tab,隐藏tab标签