在winform开发的过程中一般我们都是在窗体上进行拖拉拽放置组件,有些时候则需要在代码中动态生成组件,这样怎么来实现呢,下面一起看一下:
代码实现
比如我们要在panel上生成一些btn按钮(什么组件都可以,这里以btn示例)
这里我实现了一个导航栏菜单:
private void Main_Load(object sender, EventArgs e)
{
for (int i = 0; i <3; i++)
{
Button LevelOneBtn = new Button();
//下边这些属性如果大家不知道的话可以在 窗体上拖拽一个按钮设置好属性,再去窗体的 .Designer.cs文件中的InitializeComponent方法中去查看
LevelOneBtn.Name = $"btn{i}";//设置name
LevelOneBtn.Text = $"btn{i}";//设置text 文本显示
LevelOneBtn.Dock = DockStyle.Top;//设置位于组件的顶部
LevelOneBtn.TabIndex = i;//设置焦点
//btn.Width = 200;
LevelOneBtn.Height = 30;//设置高度
LevelOneBtn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(212)))));//设置组件背景颜色
LevelOneBtn.ForeColor = System.Drawing.Color.White;//设置组件上文字的颜色
LevelOneBtn.FlatAppearance.BorderSize = 0;//无边框
LevelOneBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;//设置组件的样式
LevelOneBtn.UseVisualStyleBackColor = false;
//添加单击事件 要提前实现方法,在方法中判断是哪个btn被点击了
LevelOneBtn.Click += new EventHandler(LevelOneBtn_Click);
AddMenuBtn.Add(LevelOneBtn);
//在这里就可以直接添加到panel上啦 注意顺序
NavigationContent_panel.Controls.Add(AddMenuBtn[i]);
}
}
//实现单击事件 在这里要根据btn的name或text来判断哪个btn的单击事件
void LevelOneBtn_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
switch (btn.Text)
{
case "btn0": ShowCloseMenu(btn.Name); break;
case "btn1":; break;
case "btn2":; break;
}
}
如果不知道组件的属性可以去窗体上拖拽一个按钮设置好属性,再去窗体的 .Designer.cs文件中的InitializeComponent方法中去查看