[英]Dynamically create buttons in c# by user at runtime
用戶在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]);
}
}
在這里,我首先向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);
}
創建控件(在您的情況下為Button)時,可以給它們提供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();
並使用該控件/按鈕執行任何操作。
但是在這種情況下存在一些危險,因為我沒有檢查是否找到了具有該名稱的控件。 如果您輸入的Name不正確,則會在.First()
上引發異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.