簡體   English   中英

如何獲取動態文本框值 c#?

[英]How to get dynamic textbox value c#?

我創建了一個生成一些文本框的按鈕,但我不知道如何獲取相應的文本框值。 我發現一些類似的想法只使用 asp.net c#,但我認為這有點不同。 這是我的代碼:

    public partial class Form1 : Form
    {
        int control = 1;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            TextBox txt = new TextBox();
            this.Controls.Add(txt);
            txt.Top = control * 25;
            txt.Left = 100;
            txt.Name = "TextBox" + this.control.ToString();
            control = control + 1;
        }

有人能幫我嗎?!

好吧,您已將文本框添加到this.Controls中,因此您可以 go 在那里翻找再次找到它們

foreach(var c in this.Controls){
  if(c is TextBox t && t.Name.StartsWith("TextBox"))
    MessageBox.Show(t.Text);

我會為 Name 選擇比“TextBox”+integer 更好的名稱,但只要您不使用相同的前綴命名您不想考慮的其他文本框,這只會選擇您動態添加的那些

如果您知道控件的名稱 I,e,您知道您想要該地址並且用戶肯定已將其輸入到 TextBox 2 中,您可以訪問按該名稱索引的控件:

this.Controls["TextBox2"].Text;

甚至不需要轉換為 TextBox .. 所有控件都有一個 text 屬性

當您擁有文本框的實例時,您可以通過讀取 Value 屬性來獲取值。 獲取實例的一種方法是在控件列表中搜索它,當您為 texbox 指定一個唯一名稱時。

{
    TextBox txt = new TextBox();
    txt.Name = "UniqueName";
    Controls.Add(txt);
}

{
    foreach(var control in Controls)
       if (control is TextBox tb && tb.Name == "UniqueName")
         return tb.Value;
}

您可以調用Control.ControlCollection.Find(String, Boolean) 方法來獲取您想要的文本框。

string text = ((TextBox)this.Controls.Find("textboxname", true)[0]).Text;

暫無
暫無

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

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