关于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控件自动排序(想怎么排就怎么排)相关推荐

  1. SAP UI5 初学者教程之二十三 - 列表控件的排序 Sort 和分组 Group 试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  2. FullCalendarDemo5 控件的实例讲解—拖拽实现值班排班(五)

    FullCalendarDemo5 控件的实例讲解-拖拽实现值班排班(五) (五)c# asp.net 操作FullCalendarDemo5 导出排班记录 目的:点击导出按钮,弹出参数指定对话框,选 ...

  3. DEV控件自定义排序实现

    一般的控件或者组件都支持按照某一列进行排序.但是,这种排序是根据数据源里的数据默认按照降序或升序排序的,同时这样的排序与字段的类型有关. 假设现在字段的类型是字符串类型 ,但是,存储的数据时数字加一些 ...

  4. SAP UI5 应用开发教程之二十三 - 列表控件的排序 Sort 和分组 Group

    本教程前一步骤,我们已经实现了给列表控件增加的搜索功能. 在搜索框里输入关键字比如 Salad,就能对发票列表进行过滤,仅显示发票模型里 ProductName 字段里包含 Salad 的那些发票行项 ...

  5. calendar控件使用 extjs_ExtJs定制日历控件——自动加载更新(日历控件显示)

    将定制的日历控件放到一个Panel里显示,其结构如下: , { border: true, id: 'page', animCollapse : true, width: 1050, height: ...

  6. html下拉列表框怎么添加数据,给html下拉框控件自动添加数据

    function AddRow(){ var myTable = tElementById("ctl00_ContentPlaceHolder1_zjjzzTB"); var ne ...

  7. html下拉框内容新增,给html下拉框控件自动添加数据

    function AddRow(){ var myTable = tElementById("ctl00_ContentPlaceHolder1_zjjzzTB"); var ne ...

  8. 【C#】通过webbrowser控件自动注册QQ号讲解

    前言:通过webbrowser控件来自动填写网页内容快速申请QQ号,其实对于没有使用类似JS脚本语言的简单网页元素来说比较简单,但是TX并不是吃素的,因此对于其网页自动填写内容需要注意些细节.下面介绍 ...

  9. EasyUI加载树控件自动展开所有目录

    在这里如何加载树控件就不在熬述,在加载树控件后,树的节点全部展开,要在OnLoadSuccess事件中写代码: 转载于:https://www.cnblogs.com/luyuwei/p/528003 ...

最新文章

  1. Java项目:前台后台玩具商城系统(java+JSP+SSM+Springboot+Jsp+maven+Mysql)
  2. 智能ABC拼音输入法的“秘密”
  3. 你知道现在的.net是什么样的吗,一张图告诉你
  4. 刚安装了Fedora32,尝尝鲜~,哈哈~~~
  5. 【django】配置文件
  6. Android开发之--Preferences的使用
  7. JS日期加减,日期运算
  8. 当电桥为恒流源时惠斯通电桥电压的计算方法
  9. Android面经分享,失业两个月,五一节前拿到offer
  10. Docker学习总结(51)——为什么不建议把数据库部署在 Docker 容器内的7大原因?
  11. 支付宝用户可直接签署器官捐献,How about 微信?
  12. [uboot 移植]uboot 移植过程
  13. 流加密,一次性密码本的原理,简介,事例以及攻击方式
  14. 系统发育树的美化~Figtree(图文教程)
  15. Android之Binder和AIDL原理
  16. 读《好好学习:个人知识管理精进指南》
  17. vue设计调查问卷:换个思路解决问题
  18. Android视频融合特效播放与渲染
  19. 【笔记】python中使用if语句处理列表:检查特殊元素、确定列表不是空的、使用多个列表
  20. 2019级第二次月赛暨软件计科联合新生赛题解

热门文章

  1. Ajax XHR请求
  2. 国内Cortex-M内核MCU产品性能哪家强?
  3. #Windows server 2019将辅助域控升级为主域控
  4. 淘宝运营 钻展基本了解 钻展投放方案 钻展投放注意的点
  5. MT【129】常数变易法
  6. 如何有效实现软件的需求管理 - 1
  7. seamless clone
  8. qt base64加解密
  9. 高斯消元法与LU分解
  10. 自大--萨旦最偏爱的原罪