If Abfrage fehlerhaft
-
Hallo,
ich habe das Problem, dass ich eine Listbox habe mit Einträgen, welche ich aus einer Datei auslese. Das funktioniert und wird korrekt dargestellt. Wenn ich einen Eintrag der Listbox markiere, dann soll dazu in einer zweiten Listbox ebenfalls eine List angezeigt werden, welche wieder aus einer Datei ausgelesen wird.
Dazu habe ich im Dsigner einen Eventhandler:
this.listDecks.SelectedIndexChanged += new System.EventHandler(this.listDecks_SelectedIndexChanged);
Und dazu die folgende Methode:
private void listDecks_SelectedIndexChanged(object sender, System.EventArgs e) { if (label7.Text != "Tag") { pictureBox1.Load("j:\\172.JPG"); label7.Text = "Tag"; } else if (label7.Text != "Nacht") { pictureBox1.Load("j:\\39.JPG"); label7.Text = "Nacht"; } }
Das Beispiel soll erstmal nur ein Test sein, bei dem jeweils bei Listenindex anwahl das Event wieder ausgelöst werden soll. Klickt man nun auf einen Index, dann wird das Label vertauscht, so dass man ja logischerweise hin und her wechseln könnte und so immer zwischen Nacht und Tag wechseln könnte, was jedoch nicht passiert. Ich habe im Debugger rausgefunden, dass er beim Indexchange erstmal die Tag abfrage durchgeht, dann das Label auf Tag setzt und dann aus der Methode rausspringt, was so auch sein soll. Wenn das Label nun auf Tag ist und man wechselt erneut den Index, dann geht er in die Nacht-Abfrage und setzt das label auf NAcht und springt dann aber nicht aus der Methode, sondern geht wieder durch diese durch und setzt das label wieder zurück auf Tag.
Dadurch wird niemals eine Änderung erreicht. Im Endeffekt verbelibt das label immer als Tag. Diesen Fehler kann ich mir beim besten Willen nicht erklären, ich hoffe ihr könnt mir helfen.
-
Ich tippe anhand deiner Beschreibung darauf, daß du noch einen anderen Event-Handler aktiviert hast (z.B. Label.TextChanged).
Oder aber das SelectedIndexChanged ist doppelt abonniert bzw. wird doppelt aufgerufen?
-
DIe Vermutung hatte ich auch, aber ich war mir nicht sicher, da er ja nur die zweite If-Abfrage durch doppeltes Durchgehen negiert. Müsste er das in der ersten dann nicht auch tun?
Deine Aussge würde aber Sinn machen, da ich es einmal probiert habe mit listBox.Items.Add("Test"), wobei dann Test bei jedem Indexwechsel auch zweimal in der listbox erschien.Ich muss nur zugeben, dass ich nicht weiß, was ich nun machen muss. Im Designer der parentform habe ich im listboxbreich nur den einen Eventhandler. Ich werde mal forschen müssen, da ich auch glaube, dass das Problem, das von dir beschriebene ist.
Wie komme ich eigentlich in den Desinger rein, gibts da ein hotkey?
(Also den, wo die ganzen LAbel mit Größe und Eventhandlern drin stehen, nicht der designer, in dem die From verändert werden kann mittels Toolbox.
-
Verstehe nur Bahnhof.
Du hast eine Listbox. Warum fragst Du diese nicht ab welcher Eintrag gerade selektiert ist?
-
Ich glaub dazu muss ich mich dann tatsächlich nochmal näher einlesen, da ich diese Option nicht in meinem Lehrbuch stehen habe.
Läuft das dann quasi so ab, dass ich frage: if Selctedindex... == Array i ... do x?
Muss ich mich dann wie gesagt selber intensiver mit befassen, klingt mir aber förderlich für das Problem
-
http://msdn.microsoft.com/de-de/library/system.windows.forms.listbox.selectedindex.aspx
http://msdn.microsoft.com/de-de/library/system.windows.forms.listbox.selecteditem.aspx