タブコントロールと4つのタブがあるフォームがあります。あらかじめ決められたタブにshowdialogのあるフォームを開きたい。
私はもう試した
OptionsForm.OPTS_TabControl1.SelectTab(1)
OptionsForm.OPTS_TabControl1.ShowDialog()
しかし、それは機能しませんでした。
何か助けはありますか?ありがとう
タブコントロールと4つのタブがあるフォームがあります。あらかじめ決められたタブにshowdialogのあるフォームを開きたい。
私はもう試した
OptionsForm.OPTS_TabControl1.SelectTab(1)
OptionsForm.OPTS_TabControl1.ShowDialog()
しかし、それは機能しませんでした。
何か助けはありますか?ありがとう
Stackoverflowを使用した最初の称賛。class=Dに注意を払ったことを示しています
あなたの質問に関して、あなたが示したそのコードは機能しているはずです。実際のエラーを提供して、把握できるようにする必要があります。
OptionsFormは、作成したクラスまたはクラスのオブジェクトを参照しますか?
とにかく、フォームのオブジェクトを作成してから、次のように開始タブを設定してみてください。
Dim OptionsObject As New OptionsForm
OptionsObject.OPTS_TabControl1.SelectTab(1)
OptionsObject.OPTS_TabControl1.ShowDialog()
別の解決策は、Showdialogメソッドのオーバーロードですが、それは一種のオーバーシュートのようです。
方法は次のとおりです。OptionsFormコード内:
Public Overloads Sub Showdialog(ByRef TabNumber As Integer)
OPTS_TabControl1.SelectTab(TabNumber)
Return MyBase.ShowDialog()
次に、を使用してフォームを呼び出します
optionsform.showdialog(1)
注:オーバーロードとは、基本的に、異なる引数を受け入れるサブローチンの別のインスタンスを作成することです。詳細については、マニュアルの342〜358ページをお読みください。
を取得しているのでNullReferenceException
、呼び出しを分離してnullオブジェクトがどこにあるかを確認する必要があります。タブコントロールはnullですか?
Imports System.Drawing
Imports System.Windows.Forms
Public Class Form1
Inherits Form
Private tabControl1 As TabControl
Private tabPage1 As TabPage
Private tabPage2 As TabPage
Private Sub MyTabs()
Me.tabControl1 = New TabControl()
Me.tabPage1 = New TabPage()
Me.tabPage2 = New TabPage()
Me.tabControl1.Controls.AddRange(New Control() {Me.tabPage1, Me.tabPage2})
Me.tabControl1.Padding = New Point(15, 10)
Me.tabControl1.Location = New Point(35, 25)
Me.tabControl1.Size = New Size(220, 220)
' Selects tabPage2 using SelectedTab.
Me.tabControl1.SelectedTab = tabPage2
Me.tabPage1.Text = "tabPage1"
Me.tabPage2.Text = "tabPage2"
Me.Size = New Size(300, 300)
Me.Controls.AddRange(New Control() {Me.tabControl1})
End Sub
Public Sub New()
MyTabs()
End Sub
Shared Sub Main()
Application.Run(New Form1())
End Sub
End Class