TabPages ausblenden oder deaktivieren?

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von bla.

    TabPages ausblenden oder deaktivieren?

    Hallo,

    soweit ich weiß, kann man TabPages vom TabControl nicht deaktivieren.
    Als Alternative hab ich jetzt gegoogled, dass man die TabPages löschen kann und danach wieder hinzufügen kann.

    Schön und gut, klappt soweit:

    VB.NET-Quellcode

    1. 'alle bis auf den ersten löschen:
    2. For i As Integer = TC.TabCount - 1 To 1 Step -1
    3. TC.TabPages.Remove(TC.TabPages(i))
    4. Next
    5. 'wieder hinzufügen
    6. TC.TabPages.Add(TabPage2)


    Wenn ich jetzt aber das dynamisch machen will, also nicht statisch "TabPage2", sondern "TabPage & i", dann gibt es leider Schwierigkeiten.
    Habe folgendes versucht:

    VB.NET-Quellcode

    1. Dim i As Integer = 2
    2. Dim p As TabPage = DirectCast(Me.Controls("TabPage" & i), TabPage)
    3. TC.TabPages.Add(p)


    und

    VB.NET-Quellcode

    1. Dim i As Integer = 2
    2. TC.TabPages.Add(TC.TabPages(i))


    Wüsste da jemand eine Alternative?
    Für ein Mindestmaß an Rechtschreibung, Interpunktion und Majuskeln!
    Füge mal im Designer 2 Tabs hinzu und sieh Dir die Datei FormX.Designer.vb an, da steht drin, wie Du es machen musst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dann sprech innerhalb der TabPages Collection doch das entsprechende Tab mit dem Namen an:

    VB.NET-Quellcode

    1. dim tp as TabPage=TC.TabPages("TabPage" &i.tostring))

    Deine TabPage gehört halt nicht zur Coontrol-Collection der Form sondern des TabControls.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. '
    2. 'TC
    3. '
    4. Me.TC.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
    5. Or System.Windows.Forms.AnchorStyles.Left) _
    6. Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
    7. Me.TC.Controls.Add(Me.TabPage1)
    8. Me.TC.Controls.Add(Me.TabPage2)
    9. Me.TC.Controls.Add(Me.TabPage3)
    10. Me.TC.Controls.Add(Me.TabPage4)
    11. Me.TC.Controls.Add(Me.TabPage5)
    12. Me.TC.Controls.Add(Me.TabPage6)
    13. Me.TC.Controls.Add(Me.TabPage7)
    14. Me.TC.Controls.Add(Me.TabPage8)
    15. Me.TC.Controls.Add(Me.TabPage9)
    16. Me.TC.Controls.Add(Me.TabPage10)
    17. Me.TC.Location = New System.Drawing.Point(12, 12)
    18. Me.TC.Name = "TC"
    19. Me.TC.SelectedIndex = 0
    20. Me.TC.Size = New System.Drawing.Size(475, 326)
    21. Me.TC.TabIndex = 0
    22. '
    23. 'TabPage1
    24. '
    25. Me.TabPage1.AllowDrop = True
    26. Me.TabPage1.Controls.Add(Me.btnWaehlen)
    27. Me.TabPage1.Location = New System.Drawing.Point(4, 22)
    28. Me.TabPage1.Name = "TabPage1"
    29. Me.TabPage1.Padding = New System.Windows.Forms.Padding(3)
    30. Me.TabPage1.Size = New System.Drawing.Size(467, 300)
    31. Me.TabPage1.TabIndex = 0
    32. Me.TabPage1.Text = "Assembly wählen"
    33. Me.TabPage1.UseVisualStyleBackColor = True
    34. '
    35. 'btnWaehlen
    36. '
    37. (...)
    38. '
    39. 'TabPage2
    40. '
    41. Me.TabPage2.Controls.Add(Me.txtBeschreibung)
    42. Me.TabPage2.Location = New System.Drawing.Point(4, 22)
    43. Me.TabPage2.Name = "TabPage2"
    44. Me.TabPage2.Padding = New System.Windows.Forms.Padding(3)
    45. Me.TabPage2.Size = New System.Drawing.Size(467, 300)
    46. Me.TabPage2.TabIndex = 1
    47. Me.TabPage2.Text = "Beschreibung"
    48. Me.TabPage2.UseVisualStyleBackColor = True
    49. '
    50. 'txtBeschreibung
    51. '
    52. (...)
    53. '
    54. 'TabPage3
    55. '
    56. Me.TabPage3.Controls.Add(Me.rbScreenKeine)
    57. Me.TabPage3.Controls.Add(Me.rbScreenURL)
    58. Me.TabPage3.Controls.Add(Me.rbScreenAnhang)
    59. Me.TabPage3.Controls.Add(Me.txtScreenshot)
    60. Me.TabPage3.Location = New System.Drawing.Point(4, 22)
    61. Me.TabPage3.Name = "TabPage3"
    62. Me.TabPage3.Padding = New System.Windows.Forms.Padding(3)
    63. Me.TabPage3.Size = New System.Drawing.Size(467, 300)
    64. Me.TabPage3.TabIndex = 7
    65. Me.TabPage3.Text = "Screenshots"
    66. Me.TabPage3.UseVisualStyleBackColor = True


    ich weiß leider nicht, wo du drauf hinaus willst...

    VB.NET-Quellcode

    1. Dim i As Integer = 2
    2. Dim p As TabPage = DirectCast(TC.Controls("TabPage" & i), TabPage)
    3. TC.TabPages.Add(p)

    bringt auch nichts.

    Der Wert darf nicht NULL sein.
    Parametername: value


    Das selbe bei

    VB.NET-Quellcode

    1. TC.TabPages.Add(TC.TabPages("Tabpage" & i))


    Wenn ich die Tabs vorher nicht löschen würde, dann klappt das... Aber die muss ich ja vorher wegbekommen.
    Für ein Mindestmaß an Rechtschreibung, Interpunktion und Majuskeln!

    bla schrieb:

    ich weiß leider nicht, wo du drauf hinaus willst...

    Du machst nirgendwo etwas gross dynamisch: ich habe Dir nur geantwortet , dass Du die TabPages in der TabControl.TabPages Collection entweder
    - per Index ansprechen kannst
    - oder per Namen (vorausgesetzt der existiert)

    Alle Methoden die Du auf die TabPages Collection anwenden kannst, findest Du hier: TabControl.TabPageCollection

    Wenn Du es nicht verstehst formulier Deine Frage so dass man sie begreifen kann ...

    @squisheemixxa es ging hier um den Namen, der in der Voreinstellung halt so heisst - Capice ?

    bla schrieb:

    ich weiß leider nicht, wo du drauf hinaus willst...

    Option Strict On
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Lösungsansatz

    VB.NET-Quellcode

    1. Dim tibiAllgemein As TabPage
    2. Dim tibiEigenschaft As TabPage
    3. Dim tibiExtras As TabPage
    4. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    5. Dim index As Integer
    6. index = tc.TabPages.IndexOf(tibiEigenschaft)
    7. tc.TabPages.Remove(tibiEigenschaft)
    8. MessageBox.Show("weg isses")
    9. tc.TabPages.Insert(index, tibiEigenschaft)
    10. End Sub
    11. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    12. tibiAllgemein = New TabPage("Allgemein")
    13. tibiEigenschaft = New TabPage("Eigenschaft")
    14. tibiExtras = New TabPage("Extras")
    15. tc.TabPages.Add(tibiAllgemein)
    16. tc.TabPages.Add(tibiEigenschaft)
    17. tc.TabPages.Add(tibiExtras)
    18. End Sub


    @touche: möchtest du deinen Beitrag noch etwas korrigieren? erledigt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()

    AWA ^^

    also i ist eine integer-variable, die die nummer der zu löschenden tabpage enthält?

    VB.NET-Quellcode

    1. For Each TP In TabControl1.TabPages
    2. If TP.name = "TabPage" & i Then 'i = Nummer der TabPage
    3. TabControl1.TabPages.Remove(TP)
    4. End If
    5. Next



    also ich sehe da keinen grund so ins detail zu gehen ;)

    sollte ich mich da irren, dann korregiert mich bitte ...

    EDIT:

    das hinzufügen an entsprechender position habe ich ebenfalls mal kurz gemacht:

    VB.NET-Quellcode

    1. TabControl1.TabPages.Insert(i - 1, "TabPage" & i)
    2. For Each TP In TabControl1.TabPages
    3. If TP.text = "TabPage" & i Then
    4. TP.name = "TabPage" & i - 1
    5. End If
    6. Next


    beim text kann man natürlich alles verwenden - die TabPage muss nicht unbedingt TabPage heißen ;)


    EDIT: also die variante von ErfinderDesRades habe ich ja ganz übersehen... das ist natürlich die genialste möglichkeit... habe ganz vergessen, dass man ja eine List(Of fast_alles) erstellen kann.
    das werde ich mir auf jedenfall merken, falls ich mal soetwas machen muss. TY

    MfG KnifeHunter

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „KnifeHunter“ ()