簡體   English   中英

用戶在運行時在c#中動態創建按鈕

[英]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.Leftbtn.Top設置為相應的坐標。

然后,當您需要使用生成的控件/按鈕時,可以通過以下方式按該Name進行搜索:

var btn = (Button)this.Controls.Find("MyBtn", true).First();

並使用該控件/按鈕執行任何操作。

但是在這種情況下存在一些危險,因為我沒有檢查是否找到了具有該名稱的控件。 如果您輸入的Name不正確,則會在.First()上引發異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM