从单独的窗口表单中调用tabPage

时间:2013-04-01 18:04:09

标签: vb.net visual-studio-2012 tabcontrol nullreferenceexception tabpage

我今天刚刚开始编程VB;所以请原谅我的无能。

我目前有两个窗体形式,一个用于通过TabControl导航不同的页面(称为BusinessSalesPage.vb),另一个是独立的(BusinessQuestion.vb)。在BusinessSalesPage.vb上按下按钮时,将打开第二个窗体。

当第二个窗口打开时,它有两个按钮,我希望用户能够单击一个按钮,然后从第一个窗口(BusinessSalesPage.vb)上的TabControl将它们带到第三个选项卡。提前谢谢。

这是我的代码:

Public Class BusinessQuestion
Inherits System.Windows.Forms.Form
Friend WithEvents mainMenu As System.Windows.Forms.TabControl
Friend WithEvents TabPage3 As System.Windows.Forms.TabPage

Private Sub yesButn_Click(sender As Object, e As EventArgs) Handles yesButn.Click

    mainMenu.SelectedTab = TabPage3()

End Sub
End Class

以下是我遇到的错误:

处理了NullReferenceException - 对象引用未设置为对象的实例。

修改

Public Class BusinessSalesPage
Inherits System.Windows.Forms.Form
Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    mainMenu.SelectedTab = TabPage2
    BusinessQuestion.Show()

End Sub
End Class

2 个答案:

答案 0 :(得分:1)

您需要引用mainForm的实际实例。你目前没有。

您可以尝试在构造函数中传递引用:

Public Class BusinessQuestion
  ' code...
  Public Sub New(mainMenu As TabControl, tabPage3 As TabPage)
    InitializeControls()
    Me.mainMenu = mainMenu
    Me.TabPage3 = tabPage3
  End Sub
  ' code...
End Class

您的BusinessSalesPage应该看起来像这样:

Public Class BusinessSalesPage
  Inherits System.Windows.Forms.Form

  Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    mainMenu.SelectedTab = TabPage2

    Dim bq As New BusinessQuestion(mainMenu, TabPage3)
    bq.ShowDialog()        
  End Sub
End Class

答案 1 :(得分:1)

@LarsTech我也尝试了这个,但我的代码存在问题。在第一个窗体上,当我键入mainMenu.SelectedTab = TabPage 1时,我收到错误:“SelectedTab不是System.Windows.Forms.MainMenu的成员,并且未声明TabPage1。由于其保护级别,它可能无法访问。在第二个表单上它没有找到InitializeControls,只有InitializeComponents。我在VS 2010中,这是我的代码:

第一种形式:

Public Class WCC
  Inherits System.Windows.Forms.Form

  Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    mainMenu.SelectedTab = TabPage1

    Dim MSO As New MSO2014CC(mainMenu:=, TabPage1:=)
    MSO.ShowDialog()        

  End Sub
End Class

第二表格:

Public Class MSO2014CC
Inherits System.Windows.Forms.Form
Friend WithEvents mainMenu As System.Windows.Forms.TabControl

  Public Sub New(mainMenu As TabControl, tabPage1 As TabPage)
    InitializeComponent()
    Me.mainMenu = mainMenu
    Me.TabPage1 = tabPage1

  End Sub
End Class