.NET|--Winform|--DotnetBar库的Button显示顺序设置
前言
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);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2016-11-26 java8入门 错误:找不到或者无法加载主类