使用基于int值的控件填充表单

本文关键字:控件 填充 表单 int | 更新日期: 2023-09-27 18:03:02

我想知道如何去做这样的事情:

我需要创建一个带有特定数量按钮的表单,该表单基于表示所需按钮数量的整数值,然后给它们自己的特定名称,以便每个按钮都可以拥有自己唯一的事件处理程序。

我能想到的一个真正的例子是Windows登录屏幕,其中创建的控件数量是基于用户数量和是否有一个Guest帐户。你觉得他们是怎么编出来的?

谢谢。

使用基于int值的控件填充表单

for (int i = 0; i < 5; i++)
{
  Button newButton = new Button();
  newButton.Name = "button" + i.ToString();
  newButton.Text = "Button #" + i.ToString();
  newButton.Location = new Point(32, i * 32);
  newButton.Click += new EventHandler(button1_Click);
  this.Controls.Add(newButton);
}
private void button1_Click(object sender, EventArgs e)
{
  if (((Button)sender).Name == "button0")
    MessageBox.Show("Button 0");
  else if (((Button)sender).Name == "button1")
    MessageBox.Show("Button 1");
}

必须定义所有按钮的名称。我建议您创建一个新的字符串数组,并将按钮名称写入其中,然后在按钮创建循环中使用它们:

//do the same length as the for loop below:
string[] buttonNames = { "button1", "button2", "button3", "button4", "button5" };
for (int i = 0; i < buttonNames.Lenght; i++)
{
  Button newButton = new Button();
  newButton.Name = "button" + i.ToString();
  newButton.Text = buttonNames[i]; //each button will now get its own name from array
  newButton.Location = new Point(32, i * 32);
  newbutton.Size = new Size(25,100); //maybe you can set different sizes too (especially for X axes)
  newButton.Click += new EventHandler(buttons_Click);
  this.Controls.Add(newButton);
}

private void buttons_Click(object sender, EventArgs e)
{
  Button btn = sender as Button
  MessageBox.Show("You clicked button: " + btn.Text + ".");
}