我无法设法从运行时创建的textboxes
获取值。
我希望用户从checkedlistbox
中选择一些内容,并在每次点击按钮时在textboxes
中输入他想要的任何值。
如何获取texboxes
的名称?他们真的存在吗?我是初学者,我真的不明白它们是如何创建的。
这是我创建textboxes
的代码。
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int x = 466;
int y = 84;
foreach (var itemChecked in checkedListBox1.CheckedItems)
{
int i = 0;
TextBox tb = new TextBox();
tb.Location = new Point(x, y);
tb.Name = "txtBox" + i++.ToString();
Controls.Add(tb);
y += 30;
}
答案 0 :(得分:5)
只需将i
放在foreach
之外并完成。
int i = 0;
foreach (var itemChecked in checkedListBox1.CheckedItems)
{
i++;
string textBoxName = "textBox" + i.ToString();
TextBox tb = new TextBox();
tb.Location = new Point(x, y);
//tb.Name = "txtBox" + i++.ToString(); <--Your Version
tb.Name = textBoxName;
//...
//Other stuff or your codes
}
答案 1 :(得分:1)
不是搜索确切的名称,而是可以使用搜索控件的字符串(已修复)。
因此,如果您找到该字符串(在您的情况下是&#39;文本框&#39;),您可以做的是在控件名称中搜索该固定字符串。如果它存在则它是动态生成的控制。
foreach(Control c in parentControlIdOrName.Controls)
{
if(c.GetType()==typeof(TextBox))
{
if(((TextBox)c).Name.indexOf("textbox")!=-1)
{
// do your coding here...what ever you want....
}
}
}
Haven没有经过测试但是,希望是最好的。它可能会奏效。