关于winfrom控件自动排序(想怎么排就怎么排)
关于winfrom控件自动排序(想怎么排就怎么排)
适用条件:在同一界面,有权限时,管理员登录能看到管理按钮,用户登录隐藏管理按钮,这样那个位置的控件就是空的
大概思路是手动设置控件的tabindex属性,设置参照物控件为1位置固定,为其他的控件跟着顺序命名1,2,3,4,N…,建立集合,遍历需要排序的控件并存放到集合下,再循环遍历出TabIndex的顺序,以参照物控件1为基准,设置除开tabinde1控件的location位置达到排序效果。。。。可能方法有点笨,有简便方法烦请大佬指出,下面排序代码,不喊TABindex设置
```csharpList<Control> c = new List<Control>(); //排序集合Point p = btnOperations.Location; //参照物1的位置int tabIndex = 0; //最大tabIndex值,所以设置的时候不要乱写,不然要循环很久foreach (Control item in panel2.Controls) // 遍历出需要排序的控件存在集合,因为在panel面板下的,所以是panel2.Controls{if (item is SimpleButton){if (item.Visible && item.Name != btnOperations.Name){c.Add(item);if (tabIndex < item.TabIndex){tabIndex = item.TabIndex;}}}}List<Control> c1 = new List<Control>(); //新建排序后的集合while (c.Count() > 0) //循环,条件是需排序集合为空{for (int i = 1; i <= tabIndex; i++)//根据最大tabindex循环,因为最大值是多少基本就有多少个需要排序,tabindex为1,所有循环因子 i= 1 也是排序的顺序{for (int j = 0; j < c.Count(); j++) //遍历需要排序的集合{if (c[j].TabIndex == i) //如果需排序控件tabindex == i //i=排序的顺序{c1.Add(c[j]); //条件成立 将控件存入新排序后的集合c.Remove(c[j]);//去掉需排序集合的控件,不然要死循环break; //排序了就跳出,免得浪费资源}}}}for (int i = 0; i < c1.Count(); i++) //循环遍历进行定位,之所以不在排序前设置,会让控件无法根据自己想要的位置进行定位{c1[i].Location = new Point(p.X - c1[i].Width - 10, p.Y); //简单算法,10 = 控件间的间隔,可以根据自己需要进行设置p = c1[i].Location; //定位}
关于winfrom控件自动排序(想怎么排就怎么排)相关推荐
- SAP UI5 初学者教程之二十三 - 列表控件的排序 Sort 和分组 Group 试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
- FullCalendarDemo5 控件的实例讲解—拖拽实现值班排班(五)
FullCalendarDemo5 控件的实例讲解-拖拽实现值班排班(五) (五)c# asp.net 操作FullCalendarDemo5 导出排班记录 目的:点击导出按钮,弹出参数指定对话框,选 ...
- DEV控件自定义排序实现
一般的控件或者组件都支持按照某一列进行排序.但是,这种排序是根据数据源里的数据默认按照降序或升序排序的,同时这样的排序与字段的类型有关. 假设现在字段的类型是字符串类型 ,但是,存储的数据时数字加一些 ...
- SAP UI5 应用开发教程之二十三 - 列表控件的排序 Sort 和分组 Group
本教程前一步骤,我们已经实现了给列表控件增加的搜索功能. 在搜索框里输入关键字比如 Salad,就能对发票列表进行过滤,仅显示发票模型里 ProductName 字段里包含 Salad 的那些发票行项 ...
- calendar控件使用 extjs_ExtJs定制日历控件——自动加载更新(日历控件显示)
将定制的日历控件放到一个Panel里显示,其结构如下: , { border: true, id: 'page', animCollapse : true, width: 1050, height: ...
- html下拉列表框怎么添加数据,给html下拉框控件自动添加数据
function AddRow(){ var myTable = tElementById("ctl00_ContentPlaceHolder1_zjjzzTB"); var ne ...
- html下拉框内容新增,给html下拉框控件自动添加数据
function AddRow(){ var myTable = tElementById("ctl00_ContentPlaceHolder1_zjjzzTB"); var ne ...
- 【C#】通过webbrowser控件自动注册QQ号讲解
前言:通过webbrowser控件来自动填写网页内容快速申请QQ号,其实对于没有使用类似JS脚本语言的简单网页元素来说比较简单,但是TX并不是吃素的,因此对于其网页自动填写内容需要注意些细节.下面介绍 ...
- EasyUI加载树控件自动展开所有目录
在这里如何加载树控件就不在熬述,在加载树控件后,树的节点全部展开,要在OnLoadSuccess事件中写代码: 转载于:https://www.cnblogs.com/luyuwei/p/528003 ...
最新文章
- Java项目:前台后台玩具商城系统(java+JSP+SSM+Springboot+Jsp+maven+Mysql)
- 智能ABC拼音输入法的“秘密”
- 你知道现在的.net是什么样的吗,一张图告诉你
- 刚安装了Fedora32,尝尝鲜~,哈哈~~~
- 【django】配置文件
- Android开发之--Preferences的使用
- JS日期加减,日期运算
- 当电桥为恒流源时惠斯通电桥电压的计算方法
- Android面经分享,失业两个月,五一节前拿到offer
- Docker学习总结(51)——为什么不建议把数据库部署在 Docker 容器内的7大原因?
- 支付宝用户可直接签署器官捐献,How about 微信?
- [uboot 移植]uboot 移植过程
- 流加密,一次性密码本的原理,简介,事例以及攻击方式
- 系统发育树的美化~Figtree(图文教程)
- Android之Binder和AIDL原理
- 读《好好学习:个人知识管理精进指南》
- vue设计调查问卷:换个思路解决问题
- Android视频融合特效播放与渲染
- 【笔记】python中使用if语句处理列表:检查特殊元素、确定列表不是空的、使用多个列表
- 2019级第二次月赛暨软件计科联合新生赛题解