Doppelte Deklaration in MSForms und For Each Schleife läuft nicht an

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Doppelte Deklaration in MSForms und For Each Schleife läuft nicht an

    Guten Tag,

    ich habe eine Frage. Ich bin noch nicht so lange in der Programmierschiene und mir ist aufgefallen, dass alle Steuerelemente doppelt referenziert/deklariert sind. Und das in der MSForms (siehe Bild).



    Ist das Normal oder ist da irgendwo ein Fehler unterlaufen und wenn ja, wie kann ich diesen beheben?

    ich bin darauf gestoßen, weil ich ein anderes Problem habe.

    Ich rufe über das Load Ereignis der UserForm eine Sub auf in der ich alle ComboBoxen mit bestimmten Nahmen Werte zuweisen möchte. Das Ganze hat auch bis vor kurzem noch funktioniert aber jetzt nicht mehr.

    Hier einmal der Code

    Quellcode

    1. Private Sub Combobox_fuellen()
    2. For Each ComB As ComboBox In Me.Controls.OfType(Of MSForms.ComboBox)()
    3. If ComB.Name.ToString.Contains("Thema") Then
    4. ' Setze den Stil auf "DropDown" oder "Simple"
    5. ComB.DropDownStyle = ComboBoxStyle.DropDown
    6. ComB.Items.Clear()
    7. ComB.Items.Add("bitte auswählen")
    8. ComB.Items.AddRange({"1", "2", "3", "4", "5"})
    9. ComB.SelectedIndex = 0
    10. ' Setze den Stil auf "DropDownList"
    11. ComB.DropDownStyle = ComboBoxStyle.DropDownList
    12. End If
    13. Next
    14. End Sub


    wenn ich eine ComboBox direkt anspreche über

    Quellcode

    1. ComboBox1.Items.AddRange({"1", "2", "3", "4", "5"})


    dann funktioniert es ohne Probleme. aber über die For Each Schleife funktioniert es nicht. ComB enthält keine Elemente und ist Nothing.

    Wie gesagt. Es hatte alles vorher funktioniert und jetzt auf einmal nicht mehr. Ich habe keine weiteren Sahen hinzugefügt oder geändert (Bibliotheken, Classen usw.). Alles ist wie sonst auch.

    Das einzige was ich hinzugefügt hatte ist, dass ich jetzt eine Funktion zur Ansprache einer SQL Datenbank hinzugefügt habe, aber auch daran kann es nicht liegen, wenn ich den kompletten Code dafür raus nehme funktioniert es trotzdem nicht.


    Ich hoffe ich konnte mich halbwegs verständlich ausdrücken und Ihr könnt mir helfen.

    Schon mal Danke an alle :)
    Bilder
    • MSForms Doppelte Bezeichnung.PNG

      6,73 kB, 219×308, 2.153 mal angesehen
    Jo, und diese komischen Control-Dubletten sind auch ganz normal bei Forms-InterOp.
    Forms-InterOp ist halt eine ziemliche Krücke - da macht MS ziemlich Handstand, um das dennoch möglich zu machen.

    Warum deine Controls nicht mehr da sind, wo du sie vermutest, weiss ich nicht.
    Entweder sind sie weg, oder sie sind woanders.
    Vielleicht ist da auch eine Version geupdatet - das würd schon reichen, dass sie nicht wiedererkannt werden.
    Vollzitat eines Vorposts an dieser Stelle entfernt ~VaporiZed

    Vielen Dank.

    Ich habe mir den Code jetzt nochmal genauer angeschaut und habe nichts in Bezug auf die MSForms Bibliothek gefunden und den Import Befehl mal raus genommen.
    Jetzt sind auch diese "Control-Dubletten" weg und der Code funktioniert auch wieder.

    (Man sollte den den Code genauer überprüfen, wenn Kollegen einen helfen wollen und irgendwelche Codeschnipsel zukommen lassen ^^)

    Vilen Dank Nochmal :)

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

    Exe schrieb:

    Ich habe mir den Code jetzt nochmal genauer angeschaut und habe nichts in Bezug auf die MSForms Bibliothek gefunden
    Hääh?
    Darf ich dich mal selbst zitieren:

    Exe schrieb:

    VB.NET-Quellcode

    1. For Each ComB As ComboBox In Me.Controls.OfType(Of MSForms.ComboBox)()

    Und das läuft nun, nachdem du den "Import Befehl" (was immer du damit meinst) "herausgenommen" hast???



    Exe schrieb:

    (Man sollte den den Code genauer überprüfen, wenn Kollegen einen helfen wollen und irgendwelche Codeschnipsel zukommen lassen ^^)
    Jo, man sollte halt wissen, was man programmiert.
    (Fast-)Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed

    Diese Codezeile war noch vom testen übrig, da ich nicht draus schlau geworden bin warum es nicht mehr funktioniert hatte.
    Habe es ja jetzt, nachdem der Fehler gefunden wurde, wieder abgeändert in:

    VB.NET-Quellcode

    1. For Each ComB In Me.Controls.OfType(Of ComboBox)()




    Den "Import Befehl"

    VB.NET-Quellcode

    1. Imports MSForms


    habe ich entfernt und dann hat alles funktioniert.

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

    Exe schrieb:

    da ich nicht draus schlau geworden bin warum es nicht mehr funktioniert hatte.
    Nur zur Klarstellung:

    VB.NET-Quellcode

    1. For Each ComB As ComboBox In Me.Controls.OfType(Of MSForms.ComboBox)()
    ist quasi wie

    VB.NET-Quellcode

    1. For Each ComB As Apfel In Me.Controls.OfType(Of Birne)()
    Beides Obst und irgendwo miteinander verwandt. Aber das ändert trotzdem nix daran, dass Apfel nicht gleich Birne ist.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.