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

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

转载于:https://www.cnblogs.com/watsonyin/archive/2007/03/14/673989.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机在线应用竖式,‎App Store 上的“竖式计算器”

加减乘除开根号竖式计算器大全。竖式计算是指在计算过程中列一道竖式计算&#xff0c;使计算简便。竖式计算贯穿整个的小学数学学习过程&#xff0c;是小学生必须掌握的必备技能。本竖式计算器支持加法竖式、减法竖式、乘法竖式、除法竖式、算术平方根竖式&#xff0c;完美支持…

线性表------栈

1、基本概念 栈&#xff1a;只允许在一端插入或删除操作的线性表栈底&#xff08;buttom&#xff09;&#xff1a;固定的&#xff0c;不允许进行插入和删除操作的另一端栈顶&#xff08;top&#xff09;&#xff1a;线性表允许插入和删除的一段 栈是线性表&#xff0c;只不过受…

Linux mmap

原文地址&#xff1a;http://www.cnblogs.com/feisky/archive/2009/11/11/1600986.html Linux提供了内存映射函数mmap, 它把文件内容映射到一段内存上(准确说是虚拟内存上), 通过对这段内存的读取和修改, 实现对文件的读取和修改, 先来看一下mmap的函数声明: 头文件: <unist…

无线网络覆盖

描述 我们的乐乐同学对于网络可算得上是情有独钟&#xff0c;他有一个计划&#xff0c;那就是用无线网覆盖郑州大学。 现在学校给了他一个机会&#xff0c;因此他要购买很多的无线路由。现在他正在部署某条大道的网络&#xff0c;而学校只允许把他的无线路由器放在路的正中间…

旧计算机 云桌面,该不该利用旧PC机改造成云桌面虚拟化模式呢?

原标题&#xff1a;该不该利用旧PC机改造成云桌面虚拟化模式呢&#xff1f;由于传统PC电脑办公模式有数据安全隐患、维护成本高、占用空间及耗电量高&#xff0c;噪音大&#xff0c;使用寿命低等弊端正在逐步退出办公领域&#xff0c;越来越多的企业选择桌面虚拟化办公模式。那…

nodemailer 附件_如何使用Nodemailer发送带有附件的电子邮件。 Node.js

nodemailer 附件In the previous article, "How to send emails using Nodemailer?", we discussed how to send simple emails using Nodemailer in Node.js? Here, we are going to learn further – How to send emails with attachments using Nodemailer in N…

荷兰国旗问题

描述 荷兰国旗有三横条块构成&#xff0c;自上到下的三条块颜色依次为红、白、蓝。现有若干由红、白、蓝三种颜色的条块序列&#xff0c;要将它们重新排列使所有相同颜色的条块在一起。本问题要求将所有红色的条块放最左边、所有白色的条块放中间、所有蓝色的条块放最右边。 …

线性表-----队列

1、基本概念 队列是只允许在一端进行插入&#xff0c;而在另一段进行删除的线性表队头&#xff1a;允许删除的一端队尾&#xff1a;允许插入的一端空队列&#xff1a;没有任何元素的空表 队列是操作受限的线性表&#xff0c;因此不是任何对线性表的操作都可以作为队列的操作…

爱情九十六课,位置决定爱情

恋人&#xff0c;就像两颗星&#xff0c;会按照彼此既定的轨道移动&#xff0c;决定爱情的&#xff0c;有时不是情感&#xff0c;而是位置。 无论你多努力&#xff0c;可能都无法超越你的位置。 候补行星 阿康的女朋友有很多男性朋友&#xff0c;他总觉得她和他们走得太近了&am…

如何在React JS组件和React JS App中添加CSS样式?

In this tutorial, we will only work with CSS styles. Please ensure you have basic knowledge of HTML, CSS, React JS and Node.Js. 在本教程中&#xff0c;我们将仅使用CSS样式 。 请确保您具有HTML&#xff0c;CSS&#xff0c;React JS和Node.Js的基础知识。 In our re…

如何用 Win32 APIs 枚举应用程序窗口和进程

http://www.vckbase.com/document/viewdoc/?id1482 转载于:https://www.cnblogs.com/niuniu502/archive/2007/03/20/681839.html

用计算机怎么打出狂浪字谱,狂浪歌曲简谱

狂浪歌曲简谱&#xff1a;66671112&#xff5c;2223176&#xff5c;一波一波接踵而来&#xff0c;大风带着我摇摆&#xff0c;22222112&#xff5c;322143&#xff0d;&#xff5c;66671112&#xff5c;梦在燃烧心在澎拜&#xff0c;不用徘徊。大摇大摆漂在人海&#xff0c;222…

C和汇编---while反汇编

环境&#xff1a;VC C程序&#xff1a; #include "stdio.h"int main() {int i1,sum0;while(i<100){sumi;i;}printf("%d\n",sum);return 0; }用while计算1到100的值&#xff0c;功能很简单&#xff0c;让我们看看反汇编 首先在main函数的入口&#xff0…

cigarettes(香烟)

描述 Tom has many cigarettes. We hypothesized that he has n cigarettes and smokes them one by one keeping all the butts. Out of k > 1 butts he can roll a new cigarette. Now&#xff0c;do you know how many cigarettes can Tom has? 汤姆有很多香烟。我们假设…

add separator in the sessionmenu

$itk_component(sessionmenu) add separator $itk_component(sessionmenu) add -label "Add images..." \       -underline 4 \       -command [code $this addImages] $itk_component(sessionmenu) add separator 转载于:https://ww…

Java Thread类的静态布尔型interrupted()方法(带示例)

线程类静态布尔型interrupted() (Thread Class static boolean interrupted()) This method is available in package java.lang.Thread.interrupted(). 软件包java.lang.Thread.interrupted()中提供了此方法。 This method is used to check the thread, whether a thread has…

IPv6技术未来发展趋势

前言 人们对于采用综合技术&#xff0c;将数据、话音和视频等业务“一网打尽”梦想的追求从来都没有停止过。从上世纪80年代的综合业务数字网(ISDN)技术&#xff0c;到90年代的基于异步传输模式(ATM)的宽带ISDN&#xff0c;直到现在的IPMPLS(多协议标记交换)技术等。在这一过程…

伪静态设置 html,Apache下伪静态html(URL Rewrite)的设置方法

一 打开 Apache 的配置文件 httpd.conf 。二 将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉三 在 httpd.conf中添加&#xff1a;RewriteEngine On#RewriteCond %{ENV:SCRIPT_URL} (?:index|dispbbs)[-0-9]\.htmlRewriteRule ^(.*?(?:index|dispbbs))-([-0-9…

栈的应用

1、括号匹配 如果是扫描到左括号&#xff0c;则入栈如果是扫描到右括号&#xff0c;则检查现在的栈顶元素&#xff0c;如果括号匹配&#xff0c;则栈顶元素出栈结束时&#xff0c;如果栈内没有元素&#xff0c;则括号匹配 bool Check(char *str){stack s;InitStack(s);int le…

Silverlight 布局控件

1.1. Canvas 在Canvas 布局中&#xff0c;控件使用Canvas.Top和Canvas.Left来定位内容: View Code 1 <Canvas x:Name"LayoutRoot" Background"White">2 <Button Name"SampleButton"3 Content"Sample Bu…