如何使用在循环中创建并存储在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<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,似乎没有很好的方法。
但是你可以使用循环通过文本框。
一旦您有了文本框集合,请使用字符串检查名称。