如何使用在循环中创建并存储在List<;字符串>;

本文关键字:lt 字符串 gt List 循环 何使用 创建 存储 | 更新日期: 2023-09-27 18:29:14

我有一个List对象,它会自动填充文本框的名称。现在我想循环浏览所有这些文本框。如何让C#知道List中的字符串名称实际上是具有该字符串名称的TextBox对象?

        List<string> txtOppsNames = new List<string>(); 
        for (int i = 1; i < numOpps; i++) 
        {
            txtOppsNames.Add("txtOpp" + i);
        }
        foreach (var txtName in txtOppsNames) 
        {
            if (txtName.Text != "")
            {
                // do stuff
            }
        }

当前代码以字符串形式读取txtName。我想把它读成一个文本框。

编辑-下面的代码包含我的解决方案。

        List<string> txtOppsNames = new List<string>();
        for (int i = 1; i < numOpps; i++) 
        {
            txtOppsNames.Add("txtOpp" + i);
        }
        foreach (var txtName in txtOppsNames)
        {
            TextBox textBox = this.Controls.Find(txtName, true).FirstOrDefault() as TextBox;
            if (textBox.Text != "")
            {
                MessageBox.Show("Thanks Amir Popovich");
            }
        }

如何使用在循环中创建并存储在List<;字符串>;

试试这个:

  List<string> txtOppsNames = new List<string>(); 
        for (int i = 1; i < numOpps; i++) 
        {
            txtOppsNames.Add("txtOpp" + i);
        }
        foreach (var txtName in txtOppsNames) 
        {
          var cntrl= FindControl(txtName);
           if (cntrl!=null && cntrl is TextBox)
              // do something with 
              ((TextBox)cntrl)
       }

使用Control.ControlCollection.Find:

string textBoxName = "txtOpp1";
TextBox textBox = this.Controls.Find(textBoxName, true).FirstOrDefault() as TextBox;

在您的情况下:

List<string> txtOppsNames = new List<string>(); 
for (int i = 1; i < numOpps; i++) 
{
    txtOppsNames.Add("txtOpp" + i);
}
foreach (var txtName in txtOppsNames) 
{
   var control = this.Controls.Find(txtName, true).FirstOrDefault();
   if(control != null && control is TextBox)
   {
      TextBox textBox = control as TextBox;
      if(textBox.Text != string.Empty)
      {
          //logic
      }
   } 
 }

假设是Winform,似乎没有很好的方法。

但是你可以使用循环通过文本框。

一旦您有了文本框集合,请使用字符串检查名称。