Autor Beitrag
SSC streezer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
BeitragVerfasst: Di 05.08.08 08:39 
Hallo zusammen,

ich habe einen treeview auf den ich ein context menu anbinden möchte.
soweit funktioniert das auch:
ausblenden 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

_________________
>> Swiss Soldiers Clan << visit us
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
SSC streezer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
BeitragVerfasst: Di 05.08.08 11:48 
ausblenden 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

_________________
>> Swiss Soldiers Clan << visit us
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
SSC streezer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
BeitragVerfasst: Di 05.08.08 11:58 
user profile iconChristian 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

_________________
>> Swiss Soldiers Clan << visit us
SSC streezer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
BeitragVerfasst: Di 05.08.08 13:10 
könnte das ein bug im framework 3.5 sein?

_________________
>> Swiss Soldiers Clan << visit us
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 05.08.08 13:59 
Ah, nee, da war noch was :idea:

Du musst eine Sache noch im MouseDown-Ereignis des Treeview machen:
ausblenden C#-Quelltext
1:
treeView1.SelectedNode = treeView1.GetNodeAt(e.Location);					

Dann ist, wenn das Popup-Menü erscheint, auch das richtige Item selektiert!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
SSC streezer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

WinXP, Vista Ultimate
C# (VS 05 n' 08), PHP
BeitragVerfasst: 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?

_________________
>> Swiss Soldiers Clan << visit us