使用基于int值的控件填充表单
本文关键字:控件 填充 表单 int | 更新日期: 2023-09-27 18:03:02
我想知道如何去做这样的事情:
我需要创建一个带有特定数量按钮的表单,该表单基于表示所需按钮数量的整数值,然后给它们自己的特定名称,以便每个按钮都可以拥有自己唯一的事件处理程序。
我能想到的一个真正的例子是Windows登录屏幕,其中创建的控件数量是基于用户数量和是否有一个Guest帐户。你觉得他们是怎么编出来的?
谢谢。
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 + ".");
}