我有一个表格,其代码分配给一个按钮:
TextBox[] tbxCantServ = new TextBox[1];
int i;
for (i = 0; i < tbxCantServ.Length; i++)
{
tbxCantServ[i] = new TextBox();
}
foreach (TextBox tbxActualCant in tbxCantServ)
{
tbxActualCant.Location = new Point(iHorizontal, iVertical);
tbxActualCant.Visible = true;
tbxActualCant.Width = 44;
tbxActualCant.MaxLength = 4;
this.Controls.Add(tbxActualCant);
iVertical = iVertical + 35;
}
此代码动态创建文本框,每个“按钮点击”一个,所以我可以有一个“添加”按钮来调用它,用户可以编写一个不受限制的事项列表。
问题是:如何将这些“textboxes.Text”分配给字符串?他们没有名字:S
类似的东西:
string sAllBoxes = tbx1.Text + tbx2.Text + "..." + tbxN.Text;
谢谢!
答案 0 :(得分:3)
您可以按照创建它们的方式进行操作。
试试这个:
string sAllBoxes="";
foreach (TextBox tbxActualCant in tbxCantServ)
{
sAllBoxes+=tbxActualCant.Text;
}
或强>
使用StringBuilder
:
StringBuilder textBuilder = new StringBuilder();
foreach (TextBox tbxActualCant in tbxCantServ)
{
textBuilder.Append(tbxActualCant.Text);
}
string allText = textBuilder.ToString();
答案 1 :(得分:3)
如果您的tbxCantServ
被定义为方法,那么您必须为文本框分配Name
,如:
int counter = 0;
foreach (TextBox tbxActualCant in tbxCantServ)
{
tbxActualCant.Location = new Point(iHorizontal, iVertical);
tbxActualCant.Name = "tbx" + counter++;
tbxActualCant.Visible = true;
tbxActualCant.Width = 44;
tbxActualCant.MaxLength = 4;
this.Controls.Add(tbxActualCant);
iVertical = iVertical + 35;
}
稍后在其他一些方法中,如果你想获得连接文本,那么你可以这样做:
string sAllBoxes = string.Join(",", this.Controls.OfType<TextBox>()
.Where(r => r.Name.StartsWith("tbx"))
.Select(r => r.Text));
但是如果您在课程级别定义了tbxCantServ
,那么您可以这样做:
string sAllBoxes = string.Join(",", tbxCantServ
.Where(r=> r != null)
.Select(r => r.Text));
在string.Join
中,您可以使用空字符串或任何字符串替换,
,具体取决于您的要求。
答案 2 :(得分:2)
如果您有权访问文本框数组,则可以轻松执行此操作:
string sAllBoxes = string.Join(" ", tbxCantServ.Select(x => x.Text));
如果您没有使用Control
的{{1}}集合,并为您的文本框命名,以便您可以使用Form
访问它们。
如果您只想在没有分隔符的情况下连接文本,也可以使用this.Controls[txtBoxName]
方法:
string.Concat