ComboBox per Code Ändern Ohne SelectedIndexChanged auslösen

  • VB.NET

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

    ComboBox per Code Ändern Ohne SelectedIndexChanged auslösen

    Hallo Zusammen,

    ich habe momentan folgendes Problem:

    Ich habe 2 ComboBoxen die einmal meine Projekte auflisten und einmal meine Mitarbeiter.
    Nun möchte ich das DataGrid dadrunter dynamisch befüllen mit werten die zu den ComboBoxen passen.

    Da ich auch die ComboBoxen erst im Code dynamisch fülle, setze ich nach dem füllen der ComboBoxen mit folgenden Code den Index:

    VB.NET-Quellcode

    1. combMitarbeiter.SelectedItem = maAktUser.Login
    2. combProjekt.SelectedIndex = 0


    Nun löst leider dieser Code meinen SelectedIndexChanged indem von den jeweiligen ComboBoxen.

    In diesem SelectedIndexChanged steht eine Funktion die das Grid befüllt und dabei versucht die Werte aus den beiden Comboboxen zu nehmen.
    Da aber zwangsläufig IMMER eine Combobox leer ist. da ja zuerst eine gesetzt wird und danach eig. erst die andere.
    bräuchte ich eine Funktion / Hilfe wie ich wenn ich den Index per CODE setze die SelectedIndexChanged nicht auslöse.

    Geht das überhaupt?

    danke für eure hilfe
    Markus
    SelectedIndexChanged wird nun mal ausgelöst, wenn du den Index änderst.
    Du könntest kurzzeitig - nicht so schöne Lösung - den Handler von der Sub entfernen (RemoveHandler). Andernfalls solltest du überlegen, ob du den Code anders gestalten kannst.
    Ohne mehr Informationen wird die Hilfe etwas schwierig.
    Ich hoffe, dass ich Dich richtig verstanden habe.
    Was bezweckst Du denn mit dem Aufruf

    VB.NET-Quellcode

    1. combProjekt.SelectedIndex = 0

    ?
    Ist es möglich, dass Du

    VB.NET-Quellcode

    1. combProjekt.Text = ""

    statt dessen aufrufst?
    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!
    @r3v0: Einer solchen Datenverarbeitung sollte man mit einem typisierten Dataset und Databinding begegnen.
    Wenn du mir sagst, welche Eigenschaften die "Werte zwischen Mitarbeiter und Projekt" haben, könnte ich glaub inner halben Stunde ein erweiterbares Grundgerüst zusammenkloppen.
    Inkl. Laden uns Speichern der Daten.

    RodFromGermany schrieb:

    Ich hoffe, dass ich Dich richtig verstanden habe.
    Was bezweckst Du denn mit dem Aufruf

    VB.NET-Quellcode

    1. combProjekt.SelectedIndex = 0

    ?
    Ist es möglich, dass Du

    VB.NET-Quellcode

    1. combProjekt.Text = ""

    statt dessen aufrufst?


    hey,

    Jaein, im SelectedIndex = 0 wählt den ersten Eintrag aus.

    ErfinderDesRades schrieb:

    @r3v0: Einer solchen Datenverarbeitung sollte man mit einem typisierten Dataset und Databinding begegnen.
    Wenn du mir sagst, welche Eigenschaften die "Werte zwischen Mitarbeiter und Projekt" haben, könnte ich glaub inner halben Stunde ein erweiterbares Grundgerüst zusammenkloppen.
    Inkl. Laden uns Speichern der Daten.

    Ein Dataset ist gleich Datenbank? Wenn ja dann bin ich da raus. Das ganze ist eine Arbeit für die Uni und wir sollen nur mit SOAP rumhantieren.

    Ich habe das Problem dann heute für mich so gelöst das ich den restlichen Code umgeschrieben habe das er auch wenn das nocheinmal aufgerufen wird nicht abrauscht :)

    Danke für eure hilfe :)

    r3v0 schrieb:

    Ein Dataset ist gleich Datenbank? Wenn ja dann bin ich da raus. Das ganze ist eine Arbeit für die Uni und wir sollen nur mit SOAP rumhantieren.

    Ein Dataset ist ein relationales Datenmodell im Speicher. Man kann es durch Abfragen von Datenbanken befüllen, oder, was einfacher ist, es als Xml lesen/schreiben.

    Dein Datenmodell: mit Projekten, Mitarbeitern, und "was dazwischen" stellt datenbänkerisch gesehen eine m:n-Relation dar, etwas, wo man mit gewöhnlichem OOP schnell an Grenzen stößt, wo die Dataset-Technologie aber genau für konzipiert ist.
    Setze ein Flag, wenn Du Deine Comboboxen befüllst, danach wieder löschen.
    Im SelIndexChange-Ereignis fragst Du dieses Flag ab und gehst raus, wenn es gesetzt ist.
    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!