App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
VB.NET / Treeview, Nodeclick
- Ersteller Seemann
- Erstellt am
Seemann
Admiral Special
- Mitglied seit
- 17.04.2002
- Beiträge
- 1.726
- Renomée
- 43
- Standort
- Langenhagen
- Mitglied der Planet 3DNow! Kavallerie!
- Prozessor
- AMD A6-3670K @3000MHz
- Mainboard
- Asus F1A75M-Pro
- Speicher
- 2x Corsair DDR3-1866 4096 MiByte
- Display
- Eizo L568 1280x1024
'n Abend liebe Forumsgemeinde.
Ich hab folgendes Problem: Ich hab in VB.NET ein Treeview-Steuerelement mit ein paar Einträgen (= Nodes) auf mehreren Ebenen. Das heißt, ich kann den Baum mit dem Plus-Zeichen vor den Einträgen auf- und zuklappen.
Das ganze geklicker auf den Nodes wird in der Methode "NodeMouseClick" ausgewertet. Wie kann ich denn aber in dieser Methode feststellen, ob tatsächlich auf einen Node (also auf den Text selber) oder auf das olle Plus-Icon geklickt wurde?
Mit anderen Worten: Wie stelle ich fest, ob der Benutzer den Baum lediglich auf- oder zugeklappt hat, oder ob er einen Eintrag im Baum ausgewählt hat?
Ich hab folgendes Problem: Ich hab in VB.NET ein Treeview-Steuerelement mit ein paar Einträgen (= Nodes) auf mehreren Ebenen. Das heißt, ich kann den Baum mit dem Plus-Zeichen vor den Einträgen auf- und zuklappen.
Das ganze geklicker auf den Nodes wird in der Methode "NodeMouseClick" ausgewertet. Wie kann ich denn aber in dieser Methode feststellen, ob tatsächlich auf einen Node (also auf den Text selber) oder auf das olle Plus-Icon geklickt wurde?
Mit anderen Worten: Wie stelle ich fest, ob der Benutzer den Baum lediglich auf- oder zugeklappt hat, oder ob er einen Eintrag im Baum ausgewählt hat?
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.665
- Renomée
- 1.249
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Gibt es für das Auswählen eines Items nicht ein eigenes Event?
Ansonsten sollte es über einen HitTest gehen. Du bekommst doch bei NodeMouseClick sicherlich die Koordinaten des Mauszeigers übergeben und es gibt doch sicherlich eine Methode HitTest oder so, welche dir sagt was an dieser Stelle ist.
Ansonsten sollte es über einen HitTest gehen. Du bekommst doch bei NodeMouseClick sicherlich die Koordinaten des Mauszeigers übergeben und es gibt doch sicherlich eine Methode HitTest oder so, welche dir sagt was an dieser Stelle ist.
Wie stelle ich fest, ob der Benutzer den Baum lediglich auf- oder zugeklappt hat, oder ob er einen Eintrag im Baum ausgewählt hat?
Die verwendest WinForms, oder? Dann helfen Dir evtl. Die Events AfterSelect, AfterExpand und AfterCollapse weiter.
Seemann
Admiral Special
- Mitglied seit
- 17.04.2002
- Beiträge
- 1.726
- Renomée
- 43
- Standort
- Langenhagen
- Mitglied der Planet 3DNow! Kavallerie!
- Prozessor
- AMD A6-3670K @3000MHz
- Mainboard
- Asus F1A75M-Pro
- Speicher
- 2x Corsair DDR3-1866 4096 MiByte
- Display
- Eizo L568 1280x1024
Jepp, ich machs mit WinForms.
Ich hab jetzt ein anderes Event (AfterChange) genommen, das ist das was ich gebraucht habe.
Ich hab jetzt ein anderes Event (AfterChange) genommen, das ist das was ich gebraucht habe.
andr_gin
Grand Admiral Special
- Mitglied seit
- 12.06.2003
- Beiträge
- 3.052
- Renomée
- 24
- Standort
- St. Pölten (60km westlich von Wien)
- Prozessor
- Core 2 Quad Q6600 @2,7GHz
- Mainboard
- ASUS P5B Deluxe
- Kühlung
- Zalman CNPS 9700 LED
- Speicher
- 2x1GB DDR2 800
- Grafikprozessor
- Connect3D X1800XT 256MB
- Display
- Hanns.G 27,5"
- HDD
- Samsung 200GB SATA System, 8x Samsung 500GB RAID 50 (RAID5 über den Controller, RAID0 über Windows
- Optisches Laufwerk
- Samsung DVD-Brenner
- Soundkarte
- onboard
- Gehäuse
- A+ XClio2
- Netzteil
- Xilence 550Watt
- Betriebssystem
- Vista x64 SP1
- Webbrowser
- Mozilla Firefox 3
Das ganze ist etwas komplizierter.
Es gibt die Ereignisse:
NodeClick
NodeDoubleClick
BeforeExpand
AfterExpand
BeforeCollapse
AfterCollapse
Die Events werden in folgender Reihenfolge aufgerufen (vorausgesetzt es wird kein Focus weggenommen z.B. durch eine MessageBox):
1.) Beim Klicken auf den Text:
NodeClick
2.) Beim Klicken auf das Plus:
BeforeExpand bzw. BeforeCollapse
AfterExpand bzw. AfterCollapse
NodeClick
3.) Beim Doppelklicken auf den Text:
NodeClick
BeforeExpand bzw. BeforeCollapse
AfterExpand bzw. AfterCollapse
NodeDoubleClick
Kurzfassung von dem Ganzen:
Das Ereignis Before- bzw. AfterExpand wird immer vor dem Mouse DoubleClick ausgewertet, obwohl sich mir der Sinn dessen nicht ganz erschließt.
Der Unterschied zwischen Before- und AfterExpand liegt darin, dass du beim Before andere EventArgs bekommst. Darin kannst du den Vorgang noch abbrechen, indem du Cancel auf True setzt.
So richtig eine Lösung habe ich jetzt momentan auch nicht, weil es für mich bisher immer egal war, worauf der User geklickt hat, aber vielleicht kannst du ja einen Nutzen daraus ziehen, dass das Expand immer zuerst kommt, wenn es das Plus ist.
Weiters solltest du immer die Events möglichst spezifisch handlen, also nicht Sender as Object, sondern sender as treeview und nicht e as EventArgs, sondern e as TreeViewEventArgs, TreeViewNodeClickEventArgs usw. Was der Event produziert, steht eh dabei
Frage: Was soll denn genau wass passieren:
1.) Auf Plus geklickt
2.) Auf Test geklickt
3.) Zwei mal auf Text geklickt
Es gibt die Ereignisse:
NodeClick
NodeDoubleClick
BeforeExpand
AfterExpand
BeforeCollapse
AfterCollapse
Die Events werden in folgender Reihenfolge aufgerufen (vorausgesetzt es wird kein Focus weggenommen z.B. durch eine MessageBox):
1.) Beim Klicken auf den Text:
NodeClick
2.) Beim Klicken auf das Plus:
BeforeExpand bzw. BeforeCollapse
AfterExpand bzw. AfterCollapse
NodeClick
3.) Beim Doppelklicken auf den Text:
NodeClick
BeforeExpand bzw. BeforeCollapse
AfterExpand bzw. AfterCollapse
NodeDoubleClick
Kurzfassung von dem Ganzen:
Das Ereignis Before- bzw. AfterExpand wird immer vor dem Mouse DoubleClick ausgewertet, obwohl sich mir der Sinn dessen nicht ganz erschließt.
Der Unterschied zwischen Before- und AfterExpand liegt darin, dass du beim Before andere EventArgs bekommst. Darin kannst du den Vorgang noch abbrechen, indem du Cancel auf True setzt.
So richtig eine Lösung habe ich jetzt momentan auch nicht, weil es für mich bisher immer egal war, worauf der User geklickt hat, aber vielleicht kannst du ja einen Nutzen daraus ziehen, dass das Expand immer zuerst kommt, wenn es das Plus ist.
Weiters solltest du immer die Events möglichst spezifisch handlen, also nicht Sender as Object, sondern sender as treeview und nicht e as EventArgs, sondern e as TreeViewEventArgs, TreeViewNodeClickEventArgs usw. Was der Event produziert, steht eh dabei
Frage: Was soll denn genau wass passieren:
1.) Auf Plus geklickt
2.) Auf Test geklickt
3.) Zwei mal auf Text geklickt
Seemann
Admiral Special
- Mitglied seit
- 17.04.2002
- Beiträge
- 1.726
- Renomée
- 43
- Standort
- Langenhagen
- Mitglied der Planet 3DNow! Kavallerie!
- Prozessor
- AMD A6-3670K @3000MHz
- Mainboard
- Asus F1A75M-Pro
- Speicher
- 2x Corsair DDR3-1866 4096 MiByte
- Display
- Eizo L568 1280x1024
Danke für die Aufrufreiehenfolge. So ähnlich hatte ich mir das auch zusammengereimt.
Mein Problem war ja im Grunde folgendes:
Ich wollte einen bestimmten Programmteil ausführen, wenn ich auf einen Tree-Node-Eintrag klicke. Das Event was ich mir dafür auserkoren hatte war das eingangs erwähnte "NodeMouseClick" (sollte ja vom Namen her auch passen...). Dummerweise wird "NodeMouseClick" halt auch aufgerufen, wenn ich auf dieses olle [+] klicke... Das macht nur in meinem Programm überhaupt keinen Sinn.
Das lustige ist: "AfterChange" tut genau das was ich will!
Mein Problem war ja im Grunde folgendes:
Ich wollte einen bestimmten Programmteil ausführen, wenn ich auf einen Tree-Node-Eintrag klicke. Das Event was ich mir dafür auserkoren hatte war das eingangs erwähnte "NodeMouseClick" (sollte ja vom Namen her auch passen...). Dummerweise wird "NodeMouseClick" halt auch aufgerufen, wenn ich auf dieses olle [+] klicke... Das macht nur in meinem Programm überhaupt keinen Sinn.
Das lustige ist: "AfterChange" tut genau das was ich will!
andr_gin
Grand Admiral Special
- Mitglied seit
- 12.06.2003
- Beiträge
- 3.052
- Renomée
- 24
- Standort
- St. Pölten (60km westlich von Wien)
- Prozessor
- Core 2 Quad Q6600 @2,7GHz
- Mainboard
- ASUS P5B Deluxe
- Kühlung
- Zalman CNPS 9700 LED
- Speicher
- 2x1GB DDR2 800
- Grafikprozessor
- Connect3D X1800XT 256MB
- Display
- Hanns.G 27,5"
- HDD
- Samsung 200GB SATA System, 8x Samsung 500GB RAID 50 (RAID5 über den Controller, RAID0 über Windows
- Optisches Laufwerk
- Samsung DVD-Brenner
- Soundkarte
- onboard
- Gehäuse
- A+ XClio2
- Netzteil
- Xilence 550Watt
- Betriebssystem
- Vista x64 SP1
- Webbrowser
- Mozilla Firefox 3
1.) Bei mir gibt es kein AfterChange, sondern nur AfterSelect.
Irgendwie ist das eh in sich schlüssig:
Nodeklick geht einfach beim Klick los, egal ob aufs Plus mit aufmachen, zumachen Text etc.
Expanded und Collapse sind auch klar
Und AfterSelect feuert beim Markieren, also wenn der Node aus irgendeinem Grund markiert wird. Das kann beim drauf klicken passieren oder wenn ein Child selected ist und man den Parent Collapsed. Dann ist der Parent nachher selected.
2.) Du solltest nicht vergessen, dass auch Events generiert werden, wenn man eine Eigenschaft im Code direkt setzt. Da fällt man relativ leicht drüber und man landet dann auch gerne in einer Endlosschleife z.B. wenn man einen Knoten "select all" hinbaut, mit dem man alle anderen selektieren kann bzw. wenn man ein GridView hat und SelectedIndexChanged abfängt, dann wird der Event auch öfter aufgerufen manchmal bei fast jeder Zeile, die man einfügt, also Vorsicht. Das ist nicht unbedingt leicht durchschaubar, was da wann aufgerufen wird und das führt dann leicht zu Spaghetticode.
Irgendwie ist das eh in sich schlüssig:
Nodeklick geht einfach beim Klick los, egal ob aufs Plus mit aufmachen, zumachen Text etc.
Expanded und Collapse sind auch klar
Und AfterSelect feuert beim Markieren, also wenn der Node aus irgendeinem Grund markiert wird. Das kann beim drauf klicken passieren oder wenn ein Child selected ist und man den Parent Collapsed. Dann ist der Parent nachher selected.
2.) Du solltest nicht vergessen, dass auch Events generiert werden, wenn man eine Eigenschaft im Code direkt setzt. Da fällt man relativ leicht drüber und man landet dann auch gerne in einer Endlosschleife z.B. wenn man einen Knoten "select all" hinbaut, mit dem man alle anderen selektieren kann bzw. wenn man ein GridView hat und SelectedIndexChanged abfängt, dann wird der Event auch öfter aufgerufen manchmal bei fast jeder Zeile, die man einfügt, also Vorsicht. Das ist nicht unbedingt leicht durchschaubar, was da wann aufgerufen wird und das führt dann leicht zu Spaghetticode.
Seemann
Admiral Special
- Mitglied seit
- 17.04.2002
- Beiträge
- 1.726
- Renomée
- 43
- Standort
- Langenhagen
- Mitglied der Planet 3DNow! Kavallerie!
- Prozessor
- AMD A6-3670K @3000MHz
- Mainboard
- Asus F1A75M-Pro
- Speicher
- 2x Corsair DDR3-1866 4096 MiByte
- Display
- Eizo L568 1280x1024
Ja, ist AfterSelect.
...und mit den Endlosschleifen weiß ich auch Bescheid, die sollen schließlich meine Dual-Core-CPU auslasten...
Naja, auf jeden Fall nochmal Danke für deine Hilfe!
...und mit den Endlosschleifen weiß ich auch Bescheid, die sollen schließlich meine Dual-Core-CPU auslasten...
Naja, auf jeden Fall nochmal Danke für deine Hilfe!
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 15K
- Antworten
- 0
- Aufrufe
- 104K