要列出的文本框中的文本
本文关键字:文本 | 更新日期: 2023-09-27 18:15:29
我对C#和整体编程都很陌生,所以在你看来,我的问题可能很愚蠢,但现在是。
我创建了一个包含7个文本框的表单,我想从这些文本框中收集文本并将其添加到列表中。然而,我收到一个错误,说System.Windows.Forms.TextBox
是一个"类型",但使用起来像一个"变量"。我该怎么办?
for (int i = 1; i < 8; i++)
{
if (TextBox[i].Text == "")
{
days.Add("Restday");
}
else
{
days.Add(TextBox[i].Text);
}
}
TextBox是一种类型。所以TextBox[i]给你带来了麻烦。
你总是可以做这样的
foreach(Control ctrl in yourform.Controls)
{
Textbox = ctrl as TextBox;
if(txtBox != null)
{
if (txtBox.Text == "")
{
days.Add("Restday");
}
else
{
days.Add(txtBox.Text);
}
}
}
这适用于一个基本的形式。如果你有面板和其他容器来组织你的控件,Guffa答案中描述的方法可能会更好。这也可以重写为接受Control
递归使用的集合来访问所有控件的方法。
将文本框引用放在一个数组中,这样您就可以轻松地循环使用它们。如果您的文本框命名为TextBox1
到TextBox7
:
TextBox[] boxes = {
TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7
};
foreach (TextBox box in boxes) {
if (box.Text == "") {
days.Add("Restday");
} else {
days.Add(box.Text);
}
}
我想您没有一个名为TextBox
的数组,这就是错误的原因。您可以尝试以下操作:
List<strig> days = this.Controls.OfType<TextBox>
.Select(r=> string.IsNullOrWhiteSpace(r.Text)
? "Restday" : r.Text)
.ToList();
但是上面会直接给你添加到表单上的文本框,如果这些文本框在其他控件中,那么你可以递归地寻找
进入表单编辑器并选择其中一个文本框。现在找到属性窗口。如果不可见,则单击查看->属性窗口
其中的一个属性将是文本框控件的名称。使用它来访问它的文本值,如下所示:
days.Add(txtMyTextboxName.Text);
如果必须遍历文本框,则可以执行以下操作:
foreach(var Textbox in this.Controls.OfType<TextBox>())
{
if (Textbox.Text == "")
{
days.Add("Restday");
}
else
{
days.Add(Textbox.Text);
}
}
但请记住,这是一种非常不标准的方法,不推荐使用。