首页 > 其他分享 >.NET|--Winform|--DotnetBar库的Button显示顺序设置

.NET|--Winform|--DotnetBar库的Button显示顺序设置

时间:2022-11-26 13:11:11浏览次数:41  
标签:DotnetBar controlList -- tabHeight Button private var new newBtnTab

前言

winform真的要注意细节啊.细节拉满才能把握得住的一个框架.

需求

实现一个动态添加按钮, 但是要根据按钮来排序 .

解决方案

using DevComponents.DotNetBar;

namespace WinFormsApp1
{
    public partial class Form1 : Form
    {

        private List<Control> _controlList = new List<Control>();

        private readonly static int _tabWidth = 45;
        private readonly static int _tabHeight = 45;
        private readonly static Size s_btnDefaultSize = new System.Drawing.Size(_tabWidth, _tabHeight);

        public Form1()
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.Manual;
            var b3 = AddBtn("3", 3);
            var b1 = AddBtn("1", 1);
            var b2 = AddBtn("2", 2);
            this.Controls.Add(b3);
            this.Controls.Add(b1);
            this.Controls.Add(b2);
        }

        protected override void OnSizeChanged(EventArgs e)
        {
            base.OnSizeChanged(e);

            _controlList = _controlList.OrderBy(c => c.TabIndex).ToList();

            var v = _controlList.Select(s => new { name = s.Name, tab = s.TabIndex });
            for (int i = 0; i < _controlList.Count; i++)
            {
                _controlList[i].Location = new Point(0, _tabHeight * (i + 1));
            }
        }


        protected override void OnControlAdded(ControlEventArgs e)
        {
            base.OnControlAdded(e);

            _controlList.Add(e.Control);
            this.Height += _tabHeight;
        }

        ButtonX AddBtn(string name, int index)
        {
            ButtonX newBtnTab = new ButtonX();
            newBtnTab.Name = name;
            newBtnTab.Text = name;
            newBtnTab.TabIndex = index;
            newBtnTab.Click += NewBtnTab_Click;
            newBtnTab.Size = s_btnDefaultSize;
            newBtnTab.Cursor = Cursors.Hand;
            newBtnTab.Location = new Point(_tabWidth, _tabHeight);
            newBtnTab.BackColor = System.Drawing.Color.FromArgb(255, 251, 251, 251);
            newBtnTab.ColorTable = DevComponents.DotNetBar.eButtonColor.Flat;
            return newBtnTab;
        }

        private void NewBtnTab_Click(object? sender, EventArgs e)
        {
            var newIndex = _controlList.Count + 1;
            var newBtn = AddBtn(newIndex.ToString(), newIndex);
            this.Controls.Add(newBtn);
        }
    }
}

标签:DotnetBar,controlList,--,tabHeight,Button,private,var,new,newBtnTab
From: https://www.cnblogs.com/love-zf/p/16927279.html

相关文章

  • 微波炉简史和它的发明者珀西•斯本塞
    二战期间,雷达作为军事侦察的决定性装备,对战争胜负起到了重要的作用,参战各国都大力发展雷达及其附属产业,很多优秀的工程师也陆续加入进来,其中,就有微波炉的发明者珀西•斯本塞......
  • 兆骑科创,海外高层次人才引进服务平台
    兆骑科创,海外高层次人才引进服务平台推动国家创新驱动高质量现代化发展是我们当前建设社会主义现代化强国的重要战略举措,随着当今科技水平不断向上攀升,技术发展日新月异,经济......
  • 搭建Gogs源代码管理
    一、安装mysqldockerrun-d--restart=always--namemysql-service-v/mysql/data:/var/lib/mysql-p3306:3306-eTZ=Asia/Shanghai-eMYSQL_ROOT_PASSWORD=123456......
  • 扩展
    01-MySQL主从搭建基于docker02-django项目实现读写分离03-CGI,FastCGI,WSGI,uWSGI,uwsgi一文搞懂04-Rabbitmq入门到精通05-python中使用rpc框架......
  • Kubernetes 日常操作记录
    1.创建deployment的YAML文件kubectlcreatedeploymentweb2--imagemnginx--dry-runmclient-oyaml>web2.yaml 2.获取节点解释,如kubectlexplainpods.spec.c......
  • 搭建K8S kubernetes
    一、安装要求1.CPU内核>=22.内存>=2G3.Docker与kubernetes版本匹配二、安装前配置1.分别设置计算机名Hostnamectlset-hostname–staticmasterHostnamectlset-h......
  • 兆骑科技,为科创企业发展保驾护航
    兆骑科技,为科创企业发展保驾护航一颗种子,从播种到破土而出长成幼苗,再到成长为茁壮的植株,最后开花结果,这个过程会受到很多因素的影响,有的种子或许会在舒适的土壤环境、温和的......
  • 分位数回归损失函数代码实现解析
    目录1.绪论2.分位数回归3.分位数回归损失函数4.\((\gamma-1)\)的放入5.程序代码表达1.绪论对于分位数回归损失函数,最近看到了两种不同的实现。这种实现和Bing......
  • K8S静态PV,PVC持久化
    1.安装NFS客户端yuminstallnfs-utilsshowmount-e192.168.137.31#测试2.创建PV,PVCkubectlcreate-fpv.yamlkubectlcreate-fpvc.yaml3.查看结果kubec......
  • 进程间的信号处理
    进程状态Linux系统下进程通常存在6种不同的状态,分为:就绪态、运行态、僵尸态、可中断睡眠状态(浅度睡眠)、不可中断睡眠状态(深度睡眠)以及暂停态。就绪态(Ready):指该进程满足被......