实现在tabcontrol里面拖拽tabpage来设置tabpage的位置
感谢 xiashengwang 提供。
原文地址:http://www.cnblogs.com/xiashengwang/p/4024505.html#3077216
1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.Windows.Forms; 5 using System.Drawing; 6 7 namespace WindowsFormsApplication1 8 { 9 public class DragableTabControl : TabControl 10 { 11 public DragableTabControl() 12 { 13 } 14 15 protected override void OnMouseDown(MouseEventArgs e) 16 { 17 base.OnMouseDown(e); 18 TabPage tabPage = GetTabPageByTab(new Point(e.X, e.Y)); 19 if (tabPage != null) 20 { 21 this.DoDragDrop(tabPage, DragDropEffects.All); 22 } 23 } 24 25 private TabPage GetTabPageByTab(Point point) 26 { 27 for (int i = 0; i < this.TabPages.Count; i++) 28 { 29 if (GetTabRect(i).Contains(point)) 30 { 31 return this.TabPages[i]; 32 } 33 } 34 return null; 35 } 36 37 protected override void OnDragOver(DragEventArgs e) 38 { 39 base.OnDragOver(e); 40 TabPage source = (TabPage)e.Data.GetData(typeof(TabPage)); 41 if (source != null) 42 { 43 TabPage target = GetTabPageByTab(PointToClient(new Point(e.X, e.Y))); 44 if (target != null) 45 { 46 e.Effect = DragDropEffects.Move; 47 MoveTabPage(source, target); 48 } 49 else 50 { 51 e.Effect = DragDropEffects.None; 52 } 53 } 54 else 55 { 56 e.Effect = DragDropEffects.None; 57 } 58 } 59 60 private void MoveTabPage(TabPage source, TabPage target) 61 { 62 if (source == target) 63 return; 64 65 int targetIndex = -1; 66 List<TabPage> lstPages = new List<TabPage>(); 67 for (int i = 0; i < this.TabPages.Count; i++) 68 { 69 if (this.TabPages[i] == target) 70 { 71 targetIndex = i; 72 } 73 if (this.TabPages[i] != source) 74 { 75 lstPages.Add(this.TabPages[i]); 76 } 77 } 78 this.TabPages.Clear(); 79 this.TabPages.AddRange(lstPages.ToArray()); 80 this.TabPages.Insert(targetIndex, source); 81 this.SelectedTab = source; 82 } 83 } 84 }
转载于:https://www.cnblogs.com/cdengjia/p/4140026.html
实现在tabcontrol里面拖拽tabpage来设置tabpage的位置相关推荐
- JQuery 拖拽元素,并移动其他元素位置
JQuery 拖拽元素,并移动其他元素位置 <!DOCTYPE html> <html> <head><meta charset="UTF-8&qu ...
- UE4 创建Actor类型蓝图拖拽到场景设置白色球消失
使用Actor或者其他类型为基类的蓝图类后,拖拽到场景中,会有白色球 如果是继承某个蓝图的子蓝图,需要找到父类蓝图,选中最顶层的自身组件 细节面板的Rendering中的Editor Billboar ...
- vue+element制作音乐播放器播放进度条bug(鼠标拖拽slider滑块滑动到指定位置无效)
最开始bug还没解决时的效果图 bug解决后的效果图 项目场景: 想自己做一个基于vue仿网易云音乐的音乐网站,在制作播放器的时候用到了element ui里面的slider组件,制作完成后发现使用c ...
- js可拖拽工作流程图设置插件
下载地址 js实现的工作流程图插件,可拖拽设置的流程图组织架构图插件,办公OA软件里少不了这种流程设置功能. dd:
- vue 2.0需求拍摄证件照(需要设置人头取景框,鼠标也拖拽,键盘方向键可调整位置)
继续昨天的代码更新一下 需求是: vue2 主页面是一个表格,存在按钮点击进行调取摄像头拍照,拍照呢要有头像的取景框,鼠标可移动,键盘通过方向键也可移动,调整了昨天的代码存在的问题,拖动会拍照一部分外 ...
- Unity3D通过拖拽UI的四个角伸缩UI
从今天开始写博客啦,把自己觉得有用的记录下来,供自己以后使用. 最近做项目遇到的一个需求,简单的实现了一下,大佬们有更好的方法恳请留言告诉我. 下图为UI的层级结构,Anchors下的四个物体为UI的 ...
- Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换
本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17718579) 在Android开发中,我们常常用到ListView ...
- css拖拽调整高度,两种为wangEditor添加拖拽调整高度的方式:CSS3和jQuery UI
wangEditor是一款优秀的Web富文本编辑器,但如果能像KindEditor那样支持拖拽调整高度就更好了.有两种方式可以为wangEditor添加这一功能,这里使用的wangEditor版本为2 ...
- dom 元素拖拽实现
文章目录 原生 JS 实现 div 拖拽 HTML 拖拽 API REF 之前找实习的时候,面试官出了道 "原生 JS 实现 div 元素拖拽",当时实现了个大概,不过很多细节 ...
最新文章
- atomikos mysql,记一次 Atomikos 分布式事务的使用
- 运行matplotlib出现:AttributeError: module ‘matplotlib‘ has no attribute ‘verbose‘
- android 自定义checkBox的样式
- QT乱码总结0.Qt乱码产生因素
- Windows Server 笔记之网络负载平衡(NLB)和服务质量(QoS)简介
- Codeforces Round #419 (Div. 2)
- ASP.NET Core 源码学习之 Options[2]:IOptions
- 【渝粤题库】广东开放大学 标准的研制与编制 形成性考核
- 推荐系统(2)-协同过滤1-UserCF、ItemCF
- Java实现首字母大写、驼峰命名与、划线转换,校验null
- 定时器控件timer winform 114869229
- ASP.NET中使用C#文件下载四方法
- 洛谷P1087 FBI树
- javamail发送邮件,解决被垃圾邮件问题
- 电脑linux下载官网下载,Bluestar Linux
- Laravel Blade 模板用法
- 阿里云云计算 33 PolarDB的优势 产品架构
- C++ 一维高斯积分的实现
- iperf3网络测试工具下载网址
- 项目管理十大知识领域之项目成本管理
热门文章
- android handler 主线程吗,[android开发]非主线程进行handler操作
- python3生成随机数_Python3.3中如何产生伪随机数
- 【杂谈】当前模型量化有哪些可用的开源工具?
- 【AI基础】OpenCV,PIL,Skimage你pick谁
- 【caffe速成】caffe图像分类从模型自定义到测试
- 全球及中国实心轴编码器行业前景趋势与运营动向分析报告2022版
- python从命令行获取参数_python从命令行获取参数操作
- 打造微量元素产业-丰收节交易会·李喜贵:签约南国健康产业
- Go 面向对象三大特性
- 【转载】zookeeper学习