none
TabControlで同じTabPageを追加する方法 RRS feed

  • 質問

  • Visual BasicのFormアプリケーションで、TabPageの複写方法考えています。

    タブの追加作成までは、できている状態です。
    ですが、追加時に同じ内容のUsercontrolを追加しようとしているのですが、
    追加時のプロパティ名が分からなくて、追加できない状態です。

    このやり方はできないのでしょうか?

        Dim _TabFile1 As TabFile 
     Private nIndex As Integer = 1

       Private Sub タブの追加ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles タブの追加ToolStripMenuItem.Click
            'タブを追加する
            TabControl1.TabPages.Add("tabPage" & nIndex.ToString())


            nIndex += 1
            _TabFile1 = New TabFile()
            _TabFile1.Location = New Point(0, 0)
            _TabFile1.TabIndex = nIndex



        End Sub

    2020年10月20日 16:39

すべての返信

  • こういう事をやりたい?

    Public Class Form1
        'Dim _TabFile1 As TabFile
        Private nIndex As Integer = 1
    
        Private Sub タブの追加ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles タブの追加ToolStripMenuItem.Click
    
            Dim copy元TabPage As TabPage = Nothing
            Dim copy元TabFile As TabFile = Nothing 'TabFileはユーザーコントロール?
    
            copy元TabPage = TabControl1.SelectedTab '現在選択されているページを元にコピーする
            If copy元TabPage Is Nothing Then
                MessageBox.Show("コピー元のTabPageが選択されていません")
                Exit Sub
            End If
    
            For Each ctl As Control In copy元TabPage.Controls 'コピー元のページに追加されているコントロール一覧を調べる
                If TypeOf ctl Is TabFile Then
                    'TabFileが見つかった
                    copy元TabFile = CType(ctl, TabFile)
                    Exit For
                End If
            Next
    
            If copy元TabFile Is Nothing Then
                MessageBox.Show("コピー元のTabFileが見つかりません")
                Exit Sub
            End If
    
            'タブを追加する
            TabControl1.TabPages.Add("tabPage" & nIndex.ToString())
            nIndex += 1
    
            Dim copy先TabPage As TabPage = Nothing
            Dim copy先TabFile As TabFile = Nothing
    
            copy先TabPage = TabControl1.TabPages.Item(TabControl1.TabPages.Count - 1) '追加されたTabPagesは末尾にある
    
            copy先TabFile = New TabFile()
            copy先TabFile.Location = copy元TabFile.Location
            copy先TabFile.TabIndex = copy元TabFile.TabIndex
    
            '必要ならコピー元からプロパティをコピーする
            'copy先TabFile.Size = copy元TabFile.Size
            'copy先TabFile.Dock = copy元TabFile.Dock
            'copy先TabFile.Margin = copy元TabFile.Margin
    
            copy先TabPage.Controls.Add(copy先TabFile)'ページに追加
    
            TabControl1.SelectedTab = copy先TabPage '追加されたページを表示するように
        End Sub
    End Class

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2020年10月20日 17:33
  • RappyKakuwaneさん、こんにちは。フォーラムオペレーターのKumoです。 
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    ご質問いただいた件ですが、その後いかがでしょうか。
    gekkaさんから寄せられた投稿はお役に立ちましたか。

    参考になった投稿には [回答としてマーク] をお願い致します。

    設定いただくことで、
    他のユーザーもお役に立つ回答を見つけやすくなります。

    お手数ですが、ご協力の程どうかよろしくお願いいたします。

    MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2020年10月23日 9:22
    モデレータ