Entwickler-Ecke
WinForms - Context menu im Treeview
SSC streezer - Di 05.08.08 08:39
Titel: Context menu im Treeview
Hallo zusammen,
ich habe einen treeview auf den ich ein context menu anbinden möchte.
soweit funktioniert das auch:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private void treeFile_MouseUp(object sender, MouseEventArgs e) { treeFile.ContextMenuStrip = contextMenuNodes; treeFile.SelectedNode = treeFile.GetNodeAt(e.X, e.Y); if (e.Button == MouseButtons.Right) { contextMenuNodes.Show(e.X, e.Y); } } |
wenn ich nun rechtsklick auf einen node mache, erscheint oben links das contextmenu - anstatt direkt an dem ort wo man die maustaste gedrückt hat. wenn man den rechten maus button loslässt, erscheint es am richtigen ort...
wie schaffe ich dass das context menu richtig angezeigt wird? nämlich nur einmal und beim mouse Up event...
gruss,
streezer
Christian S. - Di 05.08.08 11:16
Ich würde jedem Node das Kontextmenü zuweisen (myTreeNode.ContextMenu = aContextMenu), dann sollte es automatisch am richtigen Ort erscheinen. Der TreeView sollte dann kein ContextMenu mehr haben, nur noch die Nodes.
SSC streezer - Di 05.08.08 11:48
C#-Quelltext
1: 2: 3: 4: 5:
| if (e.Button == MouseButtons.Right) { TreeNode tn = e.Node; tn.ContextMenuStrip = contextMenuNodes; } |
du meinst so, ja? dann gibt es ein problem mit der auswhal des nodes - ich muss immer zuerst einen node mit der linken taste auswählen dann kann ich den rechtsklick machen. wenn ich keine selektion vorher mache, wählt er immer automatisch den obersten node aus und die aktionen im kontext menu beziehen sich ja immer auf den ausgewählten node... :s
Christian S. - Di 05.08.08 11:50
Nein! Wenn Du die Nodes anlegst, weist Du ihnen das ContextMenu zu. Und dann brauchst Du selber gar nicht mehr auf die Mausklicks reagieren.
SSC streezer - Di 05.08.08 11:58
Christian S. hat folgendes geschrieben: |
| Nein! Wenn Du die Nodes anlegst, weist Du ihnen das ContextMenu zu. Und dann brauchst Du selber gar nicht mehr auf die Mausklicks reagieren. |
aber anscheinend stimmt da was nicht - wenn ich auf einen node rechtsklicke wird er nicht selektiert bzw. ausgewählt - und so kann die methode (z.b. node löschen) nicht ausgeführt werden... :s
SSC streezer - Di 05.08.08 13:10
könnte das ein bug im framework 3.5 sein?
Christian S. - Di 05.08.08 13:59
Ah, nee, da war noch was :idea:
Du musst eine Sache noch im Mouse
Down-Ereignis des Treeview machen:
C#-Quelltext
1:
| treeView1.SelectedNode = treeView1.GetNodeAt(e.Location); |
Dann ist, wenn das Popup-Menü erscheint, auch das richtige Item selektiert!
SSC streezer - Di 05.08.08 14:36
aaaah super! hat geklappt - aber warum ist das so kompliziert - ich hab das mal viel einfacher gelernt (weiss nur nicht mehr wie xD ) -> oder war das schon immer so?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!