从以编程方式添加多次的Usercontrol访问控件?

时间:2011-11-03 23:47:29

标签: c# user-controls controls tabs tabcontrol

我经常搜索,无法在任何地方找到帮助。

我有一个带标签的表单。单击按钮时,会添加一个新选项卡,并将用户控件添加到新选项卡中。

我无法弄清楚如何访问第二个+标签上的控件。我可以从第一个标签中访问用户控件,但不是其他标签。

这是我到目前为止的代码。

private void button1_Click(object sender, EventArgs e)
{
    string title = "tabPage " + (tabControl1.TabCount + 1).ToString();
    TabPage newPage = new TabPage(title);
    tabControl1.TabPages.Add(newPage);

    UserControl1 newTabControl = new UserControl1();
    newPage.Controls.Add(newTabControl);
}

private void button2_Click(object sender, EventArgs e)
{
    label1.Text = userControl1.textBox1.Text;
}

所以,当我单击按钮1,说2或3次时,如何从该选项卡中的userControl中的textBox中获取文本?

......也许我说这一切都错了?

1 个答案:

答案 0 :(得分:3)

您需要扩展TabPage并具有包含子对象的属性,例如:

public class ExtendedTabPage : TabPage
{
    public UserControl1 UserControl { get; private set; }

    public ExtendedTabPage(UserControl1 userControl)
    {
        UserControl = userControl;
        this.Controls.Add(userControl);
    }
}

然后你可以通过.UserControl访问它,只要你还有它的引用..就像这样:

ExtendedTabPage newTab = new ExtendedTabPage(new UserControl1());
tabControl1.TabPages.Add(newTab);

newTab.UserControl.textBox1.Text = "New Tab User Control TextBox";

您还必须进入UserControl设计器文件并将文本框声明从私有更改为公共。