如何在C#(Visual Studio)中输入用户后动态创建按钮。 有一个文本框可以输入用户想要的按钮数量? 然后我的目标是在用户想要的输入字段下创建按钮 那我怎么能得到那些按钮的id?
private void button1_Click(object sender, EventArgs e)
{
List<Button> buttons = new List<Button>();
for (int i = 0; i < n; i++)
{
this.Controls.Add(buttons[i]);
}
}
答案 0 :(得分:2)
这里我首先向textbox
添加了一个事件处理程序,只要文本值发生变化就会调用它。该值将转换为int
值,然后在for循环语句中使用。您可以使用location属性将按钮的部分设置为所需的值。使用标签或名称属性,您可以为按钮分配唯一值。我希望代码有所帮助。
请看下面的代码:
private void Form1_Load(object sender, EventArgs e)
{
textBox1.TextChanged += textBox1_TextChanged;
}
void textBox1_TextChanged(object sender, EventArgs e)
{
var txtBox = sender as TextBox;
if (txtBox == null) return;
var count = Convert.ToInt16(txtBox.Text);
//
var xPosition = 0;
for (var i = 1; i <= count; i++)
{
var button = new Button
{
Tag = string.Format("Btn{0}", i),
Text = string.Format("Button{0}",i),
Location = new Point(xPosition, 0)
};
xPosition = xPosition + 100;
Controls.Add(button);
}
答案 1 :(得分:0)
当您创建Control(在您的情况下为按钮)时,您可以为它们提供Name
属性。如果该名称是唯一的,那将是非常好的。
var btn = new Button();
btn.Name = "MyBtn";
btn.Text = "Our Button";
this.Controls.Add(btn);
对于N buttons
的创建,您只需将其置于具有N次迭代的循环中,并将btn.Name
设置为“Name”+ SomeNumber。
要将按钮的位置设置为输入下方,您应将btn.Left
和btn.Top
设置为相应的坐标。
然后,当您需要使用生成的控件/按钮时,您可以按以下方式按Name
进行搜索:
var btn = (Button)this.Controls.Find("MyBtn", true).First();
并使用该控件/按钮执行任何操作。
但是在这种情况下存在一些危险,因为我没有检查是否找到了具有该名称的任何控件。如果您编写的名称不正确,则会在.First()
上抛出异常。