Listboxen Markierung aufheben

  • VB.NET

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

    Listboxen Markierung aufheben

    Guten Morgen :)

    Ich habe (mal wieder) ein Problem.

    Ich habe 3 Listboxen Die man unabhängig voneinander markieren kann. Nun möchte ich aber, dass wenn ich einen Eintrag in Listbox1 anklicke, Listbox2 und Listbox 3 zurückgesetzt werden.



    Mein erster Ansatz hierfür war

    VB.NET-Quellcode

    1. If Listbox1.Selectedindex >= -1 Then Listbox2.SelectedIndex = False
    2. If Listbox1.SelectedIndex >= -1 Then Listbox3.SelectedIndex = False


    Diese Funktion hätte ich ganz simpel auf jede Listbox gelegt aaaber: Das funktioniert irgendwie nicht. Also hab ich das "false" gegen "-1" ausgetauscht um einen Illegalen Index anzusprechen, dieses funktioniert leider auch nicht - die Markierung sitzt dann bei den beiden anderen Listbox auf dem ersten eintrag, ergo: Index"0"


    Wie kann ich denn da verfahren? Hat jemand nen Ansatz für mich der mir zeigt wo mein Denkfehler ist?



    liebe Grüße

    K00p4
    erstmal ist Option Strict On! eminent wichtig, dass du nicht auf so Ideen kommst, einem SelectedIndex False zuzuweisen.

    Jetzt Frage: willst du lernen, wie man Probleme löst, oder nur dieses Problem gelöst haben?

    Bei ersterem: such die Listbox-Klasse im ObjectBrowser - da sollteste mit bisserl drinrumgugge einen Ansatz finden.

    Hast du den ObjectBrowser verfügbar?
    @ErfinderdesRades:

    Oha ... Ich arbeite derzeit mit "Explicit on" und Strict hab ich ausgeklammert ... ich sehe allerdings nach kurzem schauen schon, dass es wohl n Akt wird das alles umzumodeln - gibt es hier einen Weg Strict On nachträglich anzuwerfen ohne das Programm neu Coden zu müssen?

    Was den Ansatz angeht: Ich weiss nicht genau ob der Objekt-Browser mit der Strict Funktion zusammenhängt, aber wenn ich derzeit den Object-Browser aufrufe, bekomme ich lediglich eine grosse Übersicht in der ich mich garnicht so wirklich zurechtfinde :(

    @Cuukiiee: Den Listbox.SelectedItem = Nothing habe ich durchaus auch schon versucht, der würde auch sehr gut funktionieren, ABER: Wenn ich den Code in alle 3 Listboxen setze und dann Listbox1 anwähle und dann Listbox2 anwähle, setzt er beide zurück und ich muss Listbox2 erneut anwählen um ein Item auswählen zu können. wie verhindere ich das?

    Koopa schrieb:

    wie verhindere ich das?
    Was macht dies?

    VB.NET-Quellcode

    1. Listbox1.SelectedItem = Nothing
    2. Listbox2.SelectedItem = Nothing
    3. Listbox3.SelectedItem = Nothing
    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!
    Es setzt meine ausgewählten Items zurück.

    Thema ist dass ich drei Listboxen habe die sich mit unterschiedlichen Daten aus einem excel File füllen. Wenn ich nun Listbox1 anwähle und ein Item darin markiere, wird mir dieses (so wie es auch sein soll) blau hinterlegt.

    Wenn ich jetzt im Anschluss daran Listbox2 auswähle, wählt er alle Markierungen ab und ich habe wieder unausgewählte Items in den Listboxen.

    Der springende Punkt ist aber dass ich erreichen möchte, dass ein einzelner Klick reicht um ein Item auszuwählen - also sprich: Ich wähle Item1 in Listbox1 an, klicke danach auf Item5 in Listbox2 - jetzt möchte ich, dass er in Listbox1 die Markierung aufhebt, jedoch die Markierung in Listbox2 aktiv lässt, sodass ich immer hin und her springen kann.
    Bisher versucht habe ich es damit:

    VB.NET-Quellcode

    1. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    2. ListBox2.SelectedItem = Nothing
    3. ListBox3.SelectedItem = Nothing
    4. End Sub
    5. Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged
    6. ListBox1.SelectedItem = Nothing
    7. ListBox3.SelectedItem = Nothing
    8. End Sub
    9. Private Sub ListBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox3.SelectedIndexChanged
    10. ListBox1.SelectedItem = Nothing
    11. ListBox2.SelectedItem = Nothing
    12. End Sub

    Hier passiert aber bei mir nur folgendes: Ich klicke Listbox1 Item1 und es wird unterlegt, nun klicke ich Listbox2 Item5 an und es werden erstmal alle Einträge abgewählt und ich muss nun von vorne einen Eintrag auswählen.

    Koopa schrieb:

    aber wenn ich derzeit den Object-Browser aufrufe, bekomme ich lediglich eine grosse Übersicht in der ich mich garnicht so wirklich zurechtfinde :(
    ja wie - die Suche-Eingabe wirds doch noch geben, oder?
    machma Screenshot - hinterher bist du im falschen Fenster gelandet oder wasweißich.


    ansonsten, was das zurechtfinden betrifft: da haperts wohl an den Grundlagen, und da geht dann auch nix drumrum. dieses Buch lesen (hingegen das Galileio-Openbook ist Mist)

    also wenn du den OB nicht verstehst, kannst du einfach nicht programmieren, aus 2 Gründen:
    • Du kannst die Dokumentation dessen nicht lesen, was dir zur Verfügung steht
    • Was man braucht, um den OB zu verstehen, braucht man auch, um ProgrammCode zu verstehen.

    Koopa schrieb:

    nun klicke ich Listbox2 Item5 an
    Ja willst Du denn nun eine Querverbindung beim Klicken eines Items haben oder nicht?
    Mach Dir ein Flag, das verhindert, das Querverbindungen aktiviert werden.
    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!