【发布时间】:2016-12-15 15:59:47
【问题描述】:
我想在父表单中添加其他表单的新标签页。
我的父表单是MainWindow,这个表单有TabControl。
我有子表单ChildForm 当我单击子表单按钮时,我想从MainWindow 在TabControl 添加新标签页。
我尝试在 ChildForm 中创建构造函数依赖项
private MainWindow mainWindow;
public List(MainWindow form)
{
this.mainWindow = form;
}
private void createButton_Click(object sender, EventArgs e)
{
TabPage tabPage = new TabPage("ASD");
mainWindow.MainTabControl.TabPages.Add(tabPage);
}
这将抛出System.NullReferenceException!
我也尝试在MainWindow 中创建访问器,女巫将在MainWindow 中返回mainTabControl 访问,但也不起作用。
public static TabControl MainTabControl
{
get {
MainWindow self = new MainWindow();
return self.mainTabControl;
}
}
这不起作用,因为我创建了新的参考,这是问题。
我尝试了 2 个示例,但都不起作用,我知道为什么不起作用!!!
有人知道如何解决这个问题吗?
【问题讨论】:
-
您的第一个示例虽然不是最佳实践,但应该可以工作。您可以使用调试器找出该表达式中的 null 值吗? mainWindow.MainTabControl.TabPages.Add(tabPage);
-
null是因为我从不创建MainWindow类的实例。 -
控件的默认
Modifiers值为Private,这意味着您无法从其他窗体访问TabControl。几乎可以肯定,例外是因为您尝试通过属性将其公开。您可以简单地将 TabControl 的 Modifiers 值更改为 Public 或 Internal,然后使用它的实际名称,例如:mainWindow.tabControl1.TabPages.Add(tabPage); -
Idle_Mind问题是空引用。我可以创建它公共的,这将再次不起作用,因为引用为空......没有对象
标签: c# winforms tabcontrol