Treeview - auslesen ob ein Eintrag markiert (selektiert) ist

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von herrm_no.

    Treeview - auslesen ob ein Eintrag markiert (selektiert) ist

    Hallo
    ich such jetzt schon seit Stunden nach einer Lösung aber es funktioniert einfach nicht.
    Ich hoffe das mir da jemand helfen kann.

    ich habe einen Treeview (directorys) und einen Listview (files)
    ich möchte nun nach dem drücken eines Buttons abfragen ob im Listview oder treeview etwas selektiert (blau markiert) wurde.
    Listview funktioniert.
    treeview aber nicht.
    Ich will einfach nur abfragen ob im Treeview ein Ordner selektiert ist (= blau markiert)
    Ich krieg das einfach nicht hin, denn wenn im treeview einmal ein Ordner bzw Unterverzeichnis angewält wurde aber nicht mehr markiert ist, dann
    krieg ich mit *selectedNode* einen Wert d.h. es ist nicht mehr "nothing"

    VB.NET-Quellcode

    1. If treeview.SelectedNode IsNot Nothing Then...


    Wie krieg ich es hin einfach nur abzufragen ob irgendein Verzeichnis "Blau" markiert ist oder nicht.

    Gruß
    herrm_no
    Hey

    das ist eine gute Frage.
    Ich hab auch gerade erst gemerkt, dass wenn der treeview den Fokus verliert (also ich nach listview wechsle) die Markierung weg ist.
    Kriegt er den Fokus wieder, dann ist die Markierung auch wieder da.

    Ich hab mal ein Bild mit angehängt wo man sieht wie das bei mir aussieht.
    Ich hab es mal mit

    VB.NET-Quellcode

    1. filFolder.SelectedNode.Nodes.Clear()

    versucht. Aber dann ist der Inhalt nicht mehr sichtbar. Hat natürlich nicht viel sinn.
    Kann man irgendwie die Markierung im Treeview wegnehmen und die letzte Baumstruktur erhalten ?

    Kurz mal eine erklärung was ich überhaupt erreichen will.
    Wenn jemand ein Verzeichnis markiert und kein file dann soll dieses kopiert (oder gezippt oder...), wenn aber ein file markiert wird, dann dieses kopieren oder....
    Deswegen brauch ich die Abfrage was selektiert ist, damit ich weis was ich hernehmen muß.

    Gruß
    herrm_no
    Bilder
    • treeview1.jpg

      22,7 kB, 670×257, 348 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „herrm_no“ ()

    danke

    das hab ich auch gerade gemerkt und meinen letzten Beitrag kurz geändert.
    Hab das von dir ausprobiert.
    Gut nun ist es grau selektiert. Man sieht es nun.

    Was kann ich nun genau tun, damit mein Problem gelöst wird.
    Hätte nicht gedacht, das mir das so viel Ärger macht :wacko:



    Gruß
    herrm_no

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

    Hey

    kurz nochmal mein Problem

    ich habe einen Treeview nur mit Verzeichnissen und einen Listview nur mit files.
    Wenn ich nun im treeview Verzeichnisse durchsuche (siehe meine bild weiter oben) und ein bestimmtes Verzeichnis selektiere, dann sehe ich die darunter befindlichen
    Files im Listview.
    Ich will einfach nur erreichen, das wenn ich im Listview etwas selektiere dieses file z.B. Z:\AAA\test.text in die VariableStrFileorFolderName geschrieben wird und wenn ich im
    treeview etwas selektiere dieses Verzeichnis z.B. Z:\AAA in die Variable strFileorFolderName geschrieben wird.
    Ich will halt einfach nur automatisch erkennen was gerade Aktiv war und selektiert wurde.
    Listview ein File markiere das spezielle file

    VB.NET-Quellcode

    1. If filFolder.SelectedNode IsNot Nothing Then 'filFolder ist der Treeview
    2. strFileorFolderName = filFolder.SelectedNode.Tag.ToString
    3. ElseIf filDatei.SelectedItems.ToString IsNot Nothing Then 'filDatei ist der Listview
    4. strFileorFolderName = filDatei.SelectedItems.Item(0).Text.ToString
    5. ' MessageBox.Show("file " & strFileorFolderName)
    6. Else : MessageBox.Show("Please select a Folder or a File")
    7. End If

    isnot Nothing funz ja so nicht, da im treeview das Verzeichnis immer "selektiert" ist (grau oder blau ist ja scheinbar kein Unterschied).
    so wie es aussieht muss ich die Abfrage um einiges erweitern. Hab gedacht das geht "ruckzuck".

    ich wollte einfach nur immer das gerade übernehmen wo der Text des Files oder Folders " blau" selektiert ist und nicht "grau"

    Gruß
    herrm_no ;(

    herrm_no schrieb:

    ich wollte einfach nur immer das gerade übernehmen wo der Text des Files oder Folders " blau" selektiert ist und nicht "grau"
    dazu kannst du's Treeview_AfterSelect-Event verwenden, und Listview wird ein gleichartiges Event bereitstellen.

    wenn dich interessiert, welche Events die Controls bereitstellen - gugge vlt. im ObjectBrowser/ObjektKatalog danach.

    Es geht aber auch im Property-Fenster, aber ich bin zu faul zu erklären, wie.
    Nur soweit: Alle möglichen Erklärungen, und ühaupt alle wesentlichen Grundlagen zum Programmieren erlernst du durch dieses Buch Lesen (nicht irgendeines)
    Danke für deine super hilfe
    ich werde deinen Vorschlag auch noch ausprobieren
    Ich hab jetzt vorrübergehend eine andere Lösung gefunden.
    Die ist zwar nichts ausgefallenes aber sie funktioniert.
    Ich frag die letzten Mouse Events ab und übergebe einer Variablen verschiedene Werte. Die weiderrum benutze ich dann für eine Abfrage.
    Das wird aber nicht funktionieren wenn jemand nur mit der Tastatur arbeitet. Das werd ich aber auschließen

    VB.NET-Quellcode

    1. Private Sub filFolder_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles filFolder.MouseClick
    2. intFileOrFolder = 1
    3. filDatei.SelectedItems.Clear() 'filDatei = der Listview
    4. End Sub
    5. Private Sub filDatei_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles filDatei.MouseClick
    6. intFileOrFolder = 2
    7. End Sub


    Danke und Gruß
    herrm_no :D