我经常搜索,无法在任何地方找到帮助。
我有一个带标签的表单。单击按钮时,会添加一个新选项卡,并将用户控件添加到新选项卡中。
我无法弄清楚如何访问第二个+标签上的控件。我可以从第一个标签中访问用户控件,但不是其他标签。
这是我到目前为止的代码。
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中获取文本?
......也许我说这一切都错了?
答案 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设计器文件并将文本框声明从私有更改为公共。