3

これは私を驚かせています。これが可能であれば、喜んで助けていただければ幸いです。

私は C# 開発者ですが、VB.NET でこれを行う必要があります。

そのため、C# の回答も受け入れられました。

  • フォームにタブ コントロールがあります。このコントロールにはまだタブがありません。

  • フォームが読み込まれると、「開始」ページが読み込まれます。タブ「tbpStart」を追加し、フォームをタブページ「frmStart」にロードします。

  • この開始ページには、多数のラジオ ボタンがあります。1 つのラジオ ボタンをクリックすると、メイン フォームに他のタブが読み込まれます。

問題は、あるフォームのタブ コントロールに別のフォームからタブを追加する方法です。

コード:

メイン フォームの読み込み時:

Try
    'Load the Start Tab
    Dim start As New frmTabStart
    AddTabPage("Start", start)
Catch ex As Exception
    PMComponentLibrary.PMMessageBox.ShowErrorMessage("Error occurred while trying to load the from.", ex)
End Try

メインフォームの機能:

Public Sub AddTabPage(tabPageName As String, myForm As System.Windows.Forms.Form)
    Try
        myForm.TopLevel = False
        myForm.Dock = DockStyle.Fill
        myForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None

        Dim NewTab As New System.Windows.Forms.TabPage
        NewTab.Name = "tab" + tabPageName
        NewTab.Text = tabPageName
        NewTab.Controls.Add(myForm)
        tbcMain.TabPages.Add(NewTab)
        myForm.Show()
    Catch ex As Exception
        Throw ex
    End Try
End Sub

「開始フォーム」のラジオボタンをクリックすると、クリックイベントでこれが実行されます。

If sender Is rdbWIPPostings Then

    entity = New frmTabEntity()
    mainForm.AddTabPage("Step 1", entity)
    Application.DoEvents()
    dte = New frmTabDate()
    mainForm.AddTabPage("Step 2", dte)

    wipSelect = New frmTabWIPSelect()
    mainForm.AddTabPage("Step 3", wipSelect)

    finish = New frmTabFinish()
    mainForm.AddTabPage("Finish", finish)

End If

ただし、タブはメイン フォームに追加されません。私は何を間違っていますか?

4

1 に答える 1

1

次のようなfrmTabStartインスタンスを受け取るようにコンストラクターを変更します。mainForm

public frmTabStart(MainForm mainForm)
{
    // store that in a field
}

そして、タブを追加する必要がある場合:

_mainForm.AddTabPage(...);
于 2013-11-01T12:09:13.790 に答える