【问题标题】:Get text from dynamically created WinForms textbox从动态创建的 WinForms 文本框中获取文本
【发布时间】:2013-11-14 02:32:36
【问题描述】:

我正在制作一个带有动态创建的文本框的窗体,正如您在方法中看到的那样。

    public void createPassengerBoxes(int numPassenger)
    {
        TextBox[] passengerBoxes = new TextBox[numPassenger];

        for (int u = 0; u < passengerBoxes.Count(); u++)
        {
            passengerBoxes[u] = new TextBox();
        }
        int i = 0;
        foreach (TextBox txt in passengerBoxes)
        {
            string name = "passenger" + i.ToString();

            txt.Name = name;
            txt.Text = name;
            txt.Location = new Point(244, 32 + (i * 28));
            txt.Visible = true;
            this.Controls.Add(txt);
            i++;
        }
    }
}

如何访问框中的文本?

【问题讨论】:

  • 以什么身份?我的意思是,只是随机访问控件的文本,还是您的意思是对 TextChanged 或其他一些用户事件做出反应?
  • 我想创建一种新方法,可以获取用户在文本框中输入的文本

标签: c# winforms textbox


【解决方案1】:

虽然我不确定您希望在什么时候或基于什么操作来获取数据,但这是非常通用的方法:

private String[] GetTextBoxStrings()
{
    List<String> list = new List<String>();
    foreach (Control c in this.Controls)
    {
        if (c is TextBox)
            list.Add(((TextBox)c).Text);
    }
    return list.ToArray();
}

【讨论】:

    【解决方案2】:

    将您的文本框声明移到函数之外。这使得它可以从类中的其他函数访问:

    class MyFormsClass
    {
        // declare textboxes at class level
        TextBox[] passengerBoxes;
    
        public void createPassengerBoxes(int numPassenger)
        {
           passengerBoxes = new TextBox[numPassenger];
           ...
        }
    
        public void OnButtonClick(...)
        {
            if (passengernBoxes != null)
            {
                 foreach (TextBox txt in passengerBoxes)
                 {
                     // do something with textboxes
                 }
            }
        }
        ...
    }
    

    【讨论】:

      【解决方案3】:

      你也可以使用 Lambda:

      var strings = Controls.OfType<TextBox>()
                            .Select(c => c.Text)
                            .ToList();
      

      这仅在您没有嵌套控件时才有效 - 例如包含一些文本框的面板或组

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-13
        • 2017-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多