none
TabPage2還是會顯示出來? RRS feed

  • 問題

  • 1.請詳列開發環境版本與語系。
    •Visual Studio Community 2019 繁體中文版
    •編譯器語系:Visual Basic
    •作業系統:Windows 10 Professional 64位元
    •作業系統語系:繁體中文版

    2.請描述預期成果。
    •執行時所有的TabPage不要顯示在畫面上

    Public Class test
        Private Sub test_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            ComboBox1.Items.AddRange(New Object() {"", "轉播站設備", "中繼器設備", "桌上臺設備", "車上臺設備", "手機設備"})
            For Each con As Control In Me.TabControl1.Controls
                If (con.GetType() Is GetType(TabPage)) Then
                    DirectCast(con, TabPage).Parent = Nothing
                End If
            Next
        End Sub

    2021年2月17日 上午 10:48

解答

  • 您可以呼叫Remove, RemoveAt, RemoveByKey等函式把欲隱藏的page移除, 達到隱藏的效果, 欲顯示時再呼叫Add或Insert函式將TabPage加回來即可:

    1. 記錄欲隱藏的TabPage

    page = tabControl1.TabPages(TabPage編號)

    2. 隱藏TabPage

    tabControl1.TabPages.RemoveAt(TabPage編號);

    3. 顯示TabPage

    tabControl1.TabPages.Add(page);


    • 已編輯 tihsMVP 2021年2月17日 下午 01:01
    • 已標示為解答 fanchiangkun 2021年2月21日 下午 12:58
    2021年2月17日 下午 01:00

所有回覆

  • 您可以呼叫Remove, RemoveAt, RemoveByKey等函式把欲隱藏的page移除, 達到隱藏的效果, 欲顯示時再呼叫Add或Insert函式將TabPage加回來即可:

    1. 記錄欲隱藏的TabPage

    page = tabControl1.TabPages(TabPage編號)

    2. 隱藏TabPage

    tabControl1.TabPages.RemoveAt(TabPage編號);

    3. 顯示TabPage

    tabControl1.TabPages.Add(page);


    • 已編輯 tihsMVP 2021年2月17日 下午 01:01
    • 已標示為解答 fanchiangkun 2021年2月21日 下午 12:58
    2021年2月17日 下午 01:00
  • 我本來的做法如下是可以的,只是如果TabPage的數量變多就會很麻煩,所以才想改成For Each迴圈,一次把所有的TabPage都隱藏起來。

    For Each con As Control In Me.TabControl1.Controls

                If (con.GetType() Is GetType(TabPage)) Then
                    DirectCast(con, TabPage).Parent = Nothing
                End If
                Next


    Public Class test
        Private Sub test_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            TabPage1.Parent = Nothing
            TabPage2.Parent = Nothing
            TabPage3.Parent = Nothing
            ComboBox1.Items.AddRange(New Object() {"", "轉播站設備", "中繼器設備", "桌上臺設備", "車上臺設備", "手機設備"})
                       
    End Sub
    
        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
            'txID.Text = ComboBox1.SelectedIndex.ToString()
            Select Case ComboBox1.SelectedIndex
                Case 1
                    TabPage1.Parent = Me.TabControl1
                    TabPage2.Parent = Nothing
                    TabPage3.Parent = Nothing
                Case 2
                    TabPage1.Parent = Nothing
                    TabPage2.Parent = Me.TabControl1
                    TabPage3.Parent = Nothing
                Case 3
                    TabPage1.Parent = Nothing
                    TabPage2.Parent = Nothing
                    TabPage3.Parent = Me.TabControl1
            End Select
        End Sub
    End Class



    • 已編輯 fanchiangkun 2021年2月18日 上午 12:53 更新
    2021年2月17日 下午 10:32
  • 叫用Remove函式和Add函式也是可以在迴圈中執行
    2021年2月18日 下午 10:44
  • Hi tihs
    感謝您的幫忙
    有空來測試看看


    2021年2月20日 上午 10:13