ComboBoxen in TabControl via Schleife ändern

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Schamash.

    ComboBoxen in TabControl via Schleife ändern

    Hallo,

    ich möchte gerne 16 Comboboxen via Schleife ändern. wenn ich diese in eine normale Form einbette, funktioniert das ohne Probleme. Aber so bald diese in einem TabControl liegen ist es vorbei.

    Im Moment nutze ich den folgenden Code:

    Quellcode

    1. Private Sub ComboBox_select_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox_select.SelectedIndexChanged
    2. Dim j As Integer
    3. Dim i As Integer
    4. j = ComboBox_select.SelectedIndex + 3
    5. 'MsgBox(ComboBox_select.SelectedIndex)
    6. For i = 3 To j ' Schleife über die Controls
    7. Dim cb = Me.Controls("ComboBoxES" & i) ' Auslesen des entsprechenden Controls, Konvertierung in eine ComboBox
    8. If cb IsNot Nothing Then ' Test auf tatsächliches Vorhandensein
    9. cb.Visible = True
    10. End If
    11. Next
    12. For i = j To 16
    13. Dim cb = Me.Controls("ComboBoxES" & i) ' Auslesen des entsprechenden Controls, Konvertierung in eine ComboBox
    14. If cb IsNot Nothing Then ' Test auf tatsächliches Vorhandensein
    15. cb.Visible = False
    16. End If
    17. Next
    18. End Sub


    Ich bedanke mich im voraus für Eure Hilfe.
    Du musst die Controls durchgehen die sich in deinem Tabcontrol befinden und nicht auf deiner Form (ME.)
    For Each tp As TabPage In TabControl1.TabPages / geht jede tabpage einzeln durch
    For Each ctl As Control In tp.Controls / jedes control auf dieser tabpage
    usw
    Hier könnte meine Signatur stehen.

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

    Wenn das ein fixes Prozedere ist kann du auch eine "List(of Combobox)" machen und da alle Comboboxen rein packen.
    Anschließend kannst du mit for each cbb as combobox in Liste alle ComboBoxen ändern
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Danke erst einmal.

    Habe Versucht auf beiden Wegen zum Ziel zu kommen aber leider nicht geklappt.

    Quellcode

    1. Dim j As Integer
    2. Dim Liste() = {ComboBox1, ComboBox2, ComboBox3, ComboBox4, ComboBox5, ComboBox6, ComboBox7, ComboBox8, ComboBox9, ComboBox10, ComboBox11, ComboBox12, ComboBox13, ComboBox14, ComboBox15, ComboBox16}
    3. Dim cbb As ComboBox
    4. j = ComboBox_select.SelectedIndex + 3
    5. For Each cbb In Liste
    6. For i = 3 To j ' Schleife über die Controls
    7. cbb.Visible = True
    8. Next
    9. For i = j To 16
    10. cbb.Visible = False
    11. Next
    12. Next


    Quellcode

    1. For Each tp As TabPage In TabControl1.TabPages
    2. For Each ctl As Control In tp.Controls
    3. For i = 3 To j ' Schleife über die Controls
    4. Dim cb As ComboBox = ctl.Controls("ComboBox" & i) ' Auslesen des entsprechenden Controls, Konvertierung in eine ComboBox
    5.  
    6. If cb IsNot Nothing Then ' Test auf tatsächliches Vorhandensein
    7. cb.Visible = True
    8. End If
    9. Next
    10. For i = j To 16
    11. Dim cb As ComboBox = ctl.Controls("ComboBox" & i) ' Auslesen des entsprechenden Controls, Konvertierung in eine ComboBox
    12. If cb IsNot Nothing Then ' Test auf tatsächliches Vorhandensein
    13. cb.Visible = False
    14. End If
    15. Next
    16. Next
    17. Next
    Ich hab dir da mal was gebastelt.
    Schau es dir mal an.
    Vielleicht hab ich dein Problem ja ganz falsch verstanden.
    Dateien
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Danke:-)

    Fast das was ich gesucht habe. nur mit einer Combobox(welche nicht ausgeblendet wird) möchte ich sagen welche anderen er unsichtbar machen soll.

    Also nicht wirklich "Each" sondern nur 6,7,8,9 und 10.

    Kann ich nicht eine "cbb" in deinem File über einen Index ansprechen?
    Habe es hinbekommen:-) Danke noch einmal an die Helfer!

    Beide Wege funktionieren nun:

    Quellcode

    1. Public Class Form1
    2. Dim i As Integer
    3. Private cbbListe As New List(Of ComboBox)
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. cbbListe.Add(ComboBox1)
    6. cbbListe.Add(ComboBox2)
    7. cbbListe.Add(ComboBox3)
    8. cbbListe.Add(ComboBox4)
    9. cbbListe.Add(ComboBox5)
    10. cbbListe.Add(ComboBox6)
    11. cbbListe.Add(ComboBox7)
    12. cbbListe.Add(ComboBox8)
    13. cbbListe.Add(ComboBox9)
    14. cbbListe.Add(ComboBox10)
    15. End Sub
    16. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    17. For Each cbb As ComboBox In cbbListe
    18. If TypeOf cbb Is ComboBox Then
    19. For i = 0 To 7
    20. If cbb.Name = "ComboBox" & i.ToString Then cbb.Visible = False
    21. Next
    22. End If
    23. Next
    24. End Sub
    25. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    26. For Each cbb As ComboBox In cbbListe
    27. If TypeOf cbb Is ComboBox Then
    28. For i = 0 To 7
    29. If cbb.Name = "ComboBox" & i.ToString Then cbb.Visible = True
    30. Next
    31. End If
    32. Next
    33. End Sub
    34. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    35. For Each tp As TabPage In TabControl1.TabPages
    36. For Each ctl As Control In tp.Controls
    37. If TypeOf ctl Is ComboBox Then
    38. For i = 0 To 7
    39. If ctl.Name = "ComboBox" & i.ToString Then ctl.Visible = True
    40. Next
    41. End If
    42. Next
    43. Next
    44. End Sub
    45. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    46. For Each tp As TabPage In TabControl1.TabPages
    47. For Each ctl As Control In tp.Controls
    48. If TypeOf ctl Is ComboBox Then
    49. For i = 0 To 7
    50. If ctl.Name = "ComboBox" & i.ToString Then ctl.Visible = False
    51. Next
    52. End If
    53. Next
    54. Next
    55. End Sub
    56. End Class
    @Pippsen das geht, aber ich würde an deiner Stelle überlegen ob das ganze ein-/ausblenden nicht anders gelöst werden könnte.
    Wenn die ein-/auszublendenden Steuerelemente gruppiert werden könnten dann kannst du mit mehreren Listen arbeiten.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."