Vb.net 从单独的窗口窗体调用选项卡页

Vb.net 从单独的窗口窗体调用选项卡页,vb.net,visual-studio-2012,tabcontrol,nullreferenceexception,tabpage,Vb.net,Visual Studio 2012,Tabcontrol,Nullreferenceexception,Tabpage,我今天才真正开始编程VB;所以请原谅我的无能 我目前有两个窗口窗体,一个是通过TabControl(称为BusinessSalesPage.vb)浏览不同的页面,另一个是单独的(BusinessQuestion.vb)。当按下BusinessSalesPage.vb上的按钮时,第二个窗口窗体打开 当第二个窗口打开时,它有两个按钮,我希望用户能够单击一个按钮,然后将它们从第一个窗口(BusinessSalesPage.vb)上的TabControl转到第三个选项卡。提前谢谢 这是我的密码: Pub

我今天才真正开始编程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-对象引用未设置为对象的实例

编辑


您需要对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

您需要对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

@LarsTech我也试过,但我的代码有问题。在第一种形式上,当我键入Main Menu.SelectedTab=TabPage 1时,我得到错误:“SelectedTab不是System.Windows.Forms.mainMenu的成员,并且TabPage1未声明。由于其保护级别,它可能无法访问。在第二种形式上,它找不到InitializeControl,只找到InitializeComponents。我在VS 2010中,下面是我的代码:

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
第一种形式:

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

@LarsTech我也尝试过,但我的代码有问题。在第一个窗体上,当我键入Main Menu.SelectedTab=TabPage 1时,我得到错误:“SelectedTab不是System.Windows.Forms.mainMenu的成员,TabPage 1未声明。由于其保护级别,可能无法访问。在第二种形式中,它没有找到InitializeControl,只有InitializeComponents。我在VS 2010中,以下是我的代码:

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
第一种形式:

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

谢谢你的回复。我已经尝试过这段代码,现在收到这个错误:对非共享成员的引用需要对象引用。这是关于BusinessSalesPage.vb中的BusinessQuestion.show()。@DannyCarman从这里看不到您的代码,但听起来好像您没有创建对象:
Dim f As new BusinessQuestion(主菜单,TabPage3)
然后
f.show()
f.ShowDialiog()
@DannyCarman非常肯定我的第一条评论解决了空值问题。@LarsTechm空值错误不是问题,新错误是“引用非共享成员需要对象引用”。您的回答是“Dim f As new BusinessQuestion(Main Menu,TabPage3),然后是f.Show()或f.ShowDialiog()不确定在哪里需要它。@DannyCarman您可以用我的代码替换
BusinessQuestion.Show()
。BusinessQuestion是您的表单类,因此您必须使用
new
关键字创建它。然后用你给它起的名字引用它,在我的例子中是
f
。试着给它起个更好的名字。如果需要在当前方法之外引用,则可能必须将
f
的声明移动到BusinessSalesPage的表单声明中。我更新了帖子。谢谢回复。我已经尝试过这段代码,现在收到这个错误:对非共享成员的引用需要对象引用。这是关于BusinessSalesPage.vb中的BusinessQuestion.show()。@DannyCarman从这里看不到您的代码,但听起来好像您没有创建对象:
Dim f As new BusinessQuestion(主菜单,TabPage3)
然后
f.show()
f.ShowDialiog()
@DannyCarman非常肯定我的第一条评论解决了空值问题。@LarsTechm空值错误不是问题,新错误是“引用非共享成员需要对象引用”。您的回答是“Dim f As new BusinessQuestion(Main Menu,TabPage3),然后是f.Show()或f.ShowDialiog()不确定在哪里需要它。@DannyCarman您可以用我的代码替换
BusinessQuestion.Show()
。BusinessQuestion是您的表单类,因此您必须使用
new
关键字创建它。然后用你给它起的名字引用它,在我的例子中是
f
。试着给它起个更好的名字。如果需要在当前方法之外引用,则可能必须将
f
的声明移动到BusinessSalesPage的表单声明中。我更新了帖子。