【问题标题】:Textbox values to array文本框值到数组
【发布时间】:2011-11-05 19:33:23
【问题描述】:
我有几个文本框,我想遍历它们并检查它们是否包含一个值,如果包含,则将其放入一个数组中。
文本框称为 txtText1、txtText2....txtText12。
这是我到目前为止得到的:
for (int i = 1; i < 13; i++)
{
if(txtText[i] != String.Empty)
{
TextArray[i] = Convert.ToString(txtText[i].Text);
}
}
..但是 txtText[i] 是不允许的。
如何循环遍历这些框?
【问题讨论】:
标签:
c#
arrays
loops
textbox
【解决方案1】:
理想情况下,首先将它们放在一个数组中,而不是使用多个单独的变量。本质上你想要一个文本框的集合,对吧?所以使用集合类型。
你可以使用
TextBox tb = (TextBox) Controls["txtText" + i];
假设他们的 ID 已正确指定,但我个人会使用 设计的集合 来处理这类事情。
【解决方案2】:
假设 txtText 数组包含对 TextBox 对象的引用,您可以这样做
var textArray=txtText.Where(t=>!string.IsNullOrEmpty(t.Text)).Select(t=>t.Text).ToArray();
【解决方案3】:
我认为你不能再在设计器中制作这样的数组对象了。
无论如何你都可以做:你可以创建一个类变量IEnumerable<Textbox> _textboxes,并用构造函数中的所有文本框填充它。
然后在你的代码中你可以这样做
foreach(var textbox in _textboxes)
{
Console.WriteLine(textbox.Text); // just an example, idk what you want to do with em
}
【解决方案4】:
你可以这样试试....
List<string> values = new List<string>();
foreach(Control c in this.Controls)
{
if(c is TextBox)
{
TextBox tb = (TextBox)c;
values.Add(tb.Text);
}
}
string[] array = values.ToArray();
【解决方案5】:
尝试创建一个文本框列表而不是这样的数组:
List<TextBox> myTextboxList = new List<TextBox>();
myTextBoxList.Add(TextBox1);
myTextBoxList.Add(TextBox2);
mytextBoxList.Add(TextBox3);
然后使用 foreach 像这样一次访问每个项目:
Foreach (TextBox item in myTextboxList) {
// Do something here, for example you can:
item.Text = "My text goes here";
}