【发布时间】:2014-11-05 07:30:49
【问题描述】:
我有一个自动填充文本框名称的 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");
}
}
【问题讨论】:
-
你不能那样做,你在什么环境下工作? ASP.NET / Windows 窗体等
-
txtOppsNames是List<string>。为什么你认为你的txtName可以是TextBox? -
您可以考虑动态创建文本框(而不是通过设计器),然后将它们添加到
List<TextBox>。 -
我正在使用 Windows 窗体应用程序。我习惯在 VBA 代码中做类似的操作,我很想在这种环境中使用它。
-
你想对文本做什么?你是如何填写清单的?您可以使用数据绑定或只使用之前建议的
TextBox列表来实现相同的目标。