在flowlayoutpanel中动态添加控件

本文关键字:添加 控件 动态 flowlayoutpanel | 更新日期: 2023-09-27 18:16:40

在windows窗体中,我可以这样动态地添加控件:

for (int i = 0; i < 5; i++)
{
    Button button = new Button();
    button.Location = new Point(160, 30 * i + 10);
    button.Tag = i;
    this.Controls.Add(button);
}

如何在FlowLayoutPanel中动态添加控件

在flowlayoutpanel中动态添加控件

对于FlowLayoutPanel,您不需要指定.Location,因为控件已为您安排:

表示动态水平布局其内容的面板或者垂直. ...FlowLayoutPanel控件安排其内容在水平或垂直的流动方向。它的内容可以是从一行换行到下一行,或从一列换行到下一列。

把"flowLayoutPanel1";到您的FlowLayoutPanel的名称:

for (int i = 0; i < 5; i++)
{
    Button button = new Button();
    button.Tag = i;
    flowLayoutPanel1.Controls.Add(button);
}

使项目从数据库(sql server)动态流动到flowLayoutPanel1:

 void button1_Enter(object sender, EventArgs e)
    {
        Button btn = sender as Button;
        btn.BackColor = Color.Gold;
    }
void button1_Leave(object sender, EventArgs e)
    {
        Button btn = sender as Button;
        btn.BackColor = Color.Green;
    }

private void form1_Load(object sender, EventArgs e)
    {
        flowLayoutPanel1.Controls.Clear();
        SqlConnection cn = new SqlConnection(@"server=.;database=MyDatabase;integrated security=true");
        SqlDataAdapter da = new SqlDataAdapter("select * from Items order by ItemsName", cn);
        DataTable dt = new DataTable();
        da.Fill(dt);
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            Button btn = new Button();
            btn.Name = "btn" + dt.Rows[i][1];
            btn.Tag = dt.Rows[i][1];
            btn.Text = dt.Rows[i][2].ToString();
            btn.Font = new Font("Arial", 14f, FontStyle.Bold);
            // btn.UseCompatibleTextRendering = true;
            btn.BackColor = Color.Green;
            btn.Height = 57;
            btn.Width = 116;
            btn.Click += button1_Click;   //  set any method
            btn.Enter += button1_Enter;   // 
            btn.Leave += button1_Leave;   //

            flowLayoutPanel1.Controls.Add(btn);                
        }