实现的需求:

用户习惯是一个不可忽略的东西,默认这版的dx的tab也木有右键操作,但用户习惯操作如浏览器都有右键关闭功能,故这里实现先dx的该功能

技术实现:

(1)在winform的相应控件内,拖入以下dx的控件

(2)初始化右键的菜单项

         private void InitPopMenu()
{
BarButtonItem barItemCurrent = new BarButtonItem
{
Name = "barItemCurrent",
Caption = "关闭当前"
};
barItemCurrent.ItemClick -= BarItemCloseCurrentClick;
barItemCurrent.ItemClick += BarItemCloseCurrentClick;
BarButtonItem barItemOther = new BarButtonItem
{
Name = "barItemOther",
Caption = "关闭其他"
};
barItemOther.ItemClick -= BarItemCloseOtherClick;
barItemOther.ItemClick += BarItemCloseOtherClick;
BarButtonItem barItemAll = new BarButtonItem
{
Name = "barItemAll",
Caption = "关闭全部"
};
barItemAll.ItemClick -= BarItemCloseAllClick;
barItemAll.ItemClick += BarItemCloseAllClick;
popupMenu.LinksPersistInfo.AddRange(new LinkPersistInfo[] { new LinkPersistInfo(barItemCurrent), new LinkPersistInfo(barItemOther), new LinkPersistInfo(barItemAll) });
}

(3)绑定tab页的右键

        private void XtraTabControlMouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
XtraTabControl tabCtrl = sender as XtraTabControl;
var pt = e.Location;
if (tabCtrl != null)
{
XtraTabHitInfo info = tabCtrl.CalcHitInfo(pt);
if (info.HitTest == XtraTabHitTest.PageHeader)
{
popupMenu.ShowPopup(MousePosition);
}
}
}
}

(4).效果图如下:

ok,到此右键菜单完成,建议封装一个继承与XtraTabControl的用户自定义控件,在此用户控件内封装好右键菜单。

下一次,讲一下tab页的拖拽,这里透漏一下,实际项目里遇到了dx里tab内关闭按钮的小叉叉跟拖拽的鼠标左键拖拽代码冲突,就是说点击小叉叉不能关闭了。好在后来找到了解决方法~

XtraTabPage右键菜单(关闭当前页、关闭其它页、所有关闭的实现)的更多相关文章

  1. [DevExpress]XtraTabControl右键加入关闭当前页、关闭其它页、所有关闭的实现

    private void xtraTabControl_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButton ...

  2. Flex4_Tree组件1(添加、删除、展开、关闭、右键菜单)

    1.屏蔽系统菜单:工程目录“html-template”文件夹-->“index.template.html”文件中,在var params = {};语句下添加新语句:        para ...

  3. arcengine实现右键菜单打开/关闭所有图层

    参考资料:  http://developer.51cto.com/art/201104/256774.htm 参照后自己做的: 关于右键菜单的几个有价值的网址: http://blog.csdn.n ...

  4. easyui修复浏览器刷新后,tab页全部关闭的问题

    一.问题描述 使用easyui搭建的上左右页面布局,当我们在右侧打开了tab页,发现点击浏览器的刷新按钮后,整个页面会被重新渲染,导致所有打开的tab页都被关闭,回到初始状态的问题. 这个问题虽然不影 ...

  5. 使用easyui为tab页增加右键菜单

    在使用easyui进行上左右布局一文中,我们已经使用easyui搭建起了一个简单的上左右布局.在使用的过程中,我们经常会遇到tab页打开的太多,但只能一个一个的关闭的烦恼,这个时候有没有想到eclip ...

  6. JS关闭当前页面的方法

    JS关闭当前页面的方法 一.不带任何提示关闭窗口的js代码 1 <a href="javascript:window.opener=null;window.open('','_self ...

  7. chrome JS关闭当前页无效问题

    如果没有父窗口,JS中 window.opener = null; window.open("", "_self"); window.close(); 对chr ...

  8. ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作

    ThinkPHP 表单提交操作成功后执行JS操作如何刷新父页面或关闭当前页等操作 .操作成功后刷新父页面 $this->assign('jumpUrl', "javascript:wi ...

  9. js打开新页面 关闭当前页 关闭父页面

    js打开新页面.关闭当前页.关闭父页面 2010-04-29 14:04:13|  分类: 页面与JavaScript |  标签: |字号大中小 订阅     //关闭当前页面,并且打开新页面,(不 ...

随机推荐

  1. 百度地图中使用mouseover事件获取经纬度时无法拿到鼠标所在位置的经纬度。

    用百度2.0的话使用mousemove 鼠标在地图区域移动过程中触发此事件.mouseover参数e中没有point参数

  2. js 随机数组

    生成指定num-start 个数组长度,值为start---num 的随机数组,不包括num这个值 function rand_arr(num,start) { // 验证值 if(!argument ...

  3. 【算法笔记】B1036 跟奥巴马一起编程

    1036 跟奥巴马一起编程 (15 分) 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴 ...

  4. oracle五种约束的创建和移除:

    .主键约束: 创建表的时候就添加: create table table_name (categoryId varchar2(), categoryName varchar2(), primary k ...

  5. LeetCode936. Stamping The Sequence

    一.题面 You want to form a target string of lowercase letters. At the beginning, your sequence is targe ...

  6. Cannot reinitialise DataTable 问题

    加个 destroy:true,   //Cannot reinitialise DataTable,解决重新加载表格内容问题

  7. docker run、commit报错

    1.docker commit 报错 Error response from daemon: devmapper: Error mounting '/dev/mapper/docker-253:2-1 ...

  8. linux 密码复杂度设置

    /etc/login.defs文件,里面几个选项 PASS_MAX_DAYS 90 #密码最长过期天数 PASS_MIN_DAYS 80 #密码最小过期天数 PASS_MIN_LEN 10 #密码最小 ...

  9. web安全——文件上传

    文件上传本身不是漏洞,但如果文件上传功能的限制出现纰漏,允许了不合法且影响网站安全的文件的上传    可以将不合法且影响网站安全稳定性的文件等内容上传的均为“文件上传漏洞”        黑方将文件上 ...

  10. Docker学习笔记--Docker 启动nginx实例挂载目录权限不够(转)

    今天在启动一个docker 运行nginx实例,在挂载目录时,出现访问静态目录时,权限不够 执行的命令是: docker run --name my-nginx -d -p 80:80 --resta ...