2017-09-26 59 views
-1

我有一个问题,我有点困惑,所以我打算简单:一个表格的实例

我有2种形式(form1和form2)。

Form1有一个tab控件,它在tabpage中显示form2。 Form2有一个button1,它自己关闭,因此tabpage。

我使用这个代码为Button1:

Dim f1 As New Form1() 
f1.tabControl1.Controls.Remove(f1.tabControl1.Selectedtab) 

使用上面的代码,我得到了一个例外,这样只是为了确保标签页有我在Button1的去除标签页前补充一点:

Console.Writeline(f1.tabControl1.TabCount) 

使用情况显示为0,但使用默认实例说明1:

Console.Writeline(Form1.tabControl1.TabCount) 

我想知道如果我做错事创建一个实例

PD:我知道我可以用这个:

Form1.tabControl1.Controls.Remove(Form1.tabControl1.Selectedtab) 

但我需要用实例来工作

编辑:

我得到一个NullReferenceException当我使用:

Dim f1 As New Form1() 
f1.tabControl1.Controls.Remove(f1.tabControl1.Selectedtab) 

正如我所说的,它的工作原理,如果我使用deafult例如

编辑2:

这是我用来创建标签页的代码,这种方法是在Form1,我在Form1调用它在一个按钮的点击事件:

Dim tabpage1 as new Tabpage 
Dim f2 as new Form2 

tabpage1.Controls.Add(f2) 
f2.show() 

tabControl1.TabPages.Add(tabpage1) 
+0

我无法重现该异常。请将其添加到您的问题。如果你从你的f1实例中删除了SelectedTab,那么它预计它有一个小于默认实例的选项卡。 – MatSnow

+0

是的,但我在删除tabpage之前做了Console.writeline,所以两者,即isntance和默认实例,都应该有一个tabpage .tabcount只显示1,默认实例 –

+1

我无法再现它。我创建了一个空表单,添加了一个带有一个Tab的TabControl并创建了一个表单实例。它显示TabCount = 1,没有'NullReferenceException'。你的Form1-Class里面一定有东西是造成这种情况的。 – MatSnow

回答

0

我得到了答案: 在窗口2:

Dim f1 As New Form1 
Public Sub New(ByRef _f1) 
' TODO: Complete member initialization 
InitializeComponent() 
f1 = _f1 
End Sub 

我不得不引用Form1中