1

我无法从中获取textboxes在运行时创建的值。

我希望用户从 a 中选择一些东西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;
     }
4

2 回答 2

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
}
于 2013-02-15T12:27:06.160 回答
1

您可以做的不是搜索确切的名称,而是使用一个字符串(固定)来搜索控件。

因此,如果您找到该字符串(在您的情况下是 'textbox' ),您可以做的是以控件的名称搜索该固定字符串。如果它存在,那么它是动态生成的控件。

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....
        }
    }
}

还没测试,希望最好。它可能会起作用。

于 2013-02-15T12:55:14.330 回答