Rechtsklick auf treeview

22/10/2007 - 08:21 von Pascal Suter | Report spam
Hallo zusammen

Ich habe mir einen Tree erstellt. Klick der User mit der rechten Maustaste
auf einen Node, so soll ein Contextmenu(für jeden NodeLevel ein anderes
erscheinen).
Das Problem ist aber, dass der Event mehrmals ausgelöst wird. Was ich nicht
verstehe ist:
- Wenn ich im Click event eine Messagebox reinbaue, dann kommt diese nur
einmal, die funktion welche beim durch-ifen aufgerufen wird kommt aber so
zwischen 1-5 mal.

Mein erster Versuch war mit dem MouseUp Event und der zweite mit dem
NodeMouseClick.

Wàre froh wenn mir jemand einen Tipp hàtte...

Grüsse
Pascal Suter

Paste hier noch der Code rein, ev. hilfts was:

private void treeView1_MouseUp(object sender,
System.Windows.Forms.MouseEventArgs e)
{
MessageBox.Show("drinn");
if (e.Button == MouseButtons.Right)
{
// Show menu only if the right mouse button is clicked.
// Point where the mouse is clicked.
Point p = new Point(e.X, e.Y);

// Get the node that the user has clicked.
TreeNode node = treeView1.GetNodeAt(p);

if (node != null)
{
// Select the node the user has clicked.
// The node appears selected until the menu is
displayed on the screen.
m_OldSelectNode = node;
treeView1.SelectedNode = node;
this.mnuTextFile = new
System.Windows.Forms.ContextMenuStrip(this.components);
// modify context menu dependig on the node level
if (node.Level == 4)
{
// the mnuAddNode only shows if its not already on
node level
this.mnuRemove.Name = "mnuRemove";
this.mnuRemove.Size = new System.Drawing.Size(140,
22);
this.mnuRemove.Text = "&Remove node";
this.mnuRemove.Click += new
System.EventHandler(this.mnuRemove_Click);
this.mnuEdit.Name = "mnuEdit";
this.mnuEdit.Size = new System.Drawing.Size(140,
22);
this.mnuEdit.Text = "&Edit Node";
this.mnuEdit.Click += new
System.EventHandler(this.mnuEdit_Click);
this.mnuTextFile.Items.AddRange(new
System.Windows.Forms.ToolStripItem[] {
this.mnuRemove,
this.mnuEdit});
this.mnuTextFile.Name = "mnuTextFile";
this.mnuTextFile.Size = new
System.Drawing.Size(141, 70);

}
else if (node.Level == 0)
{
// The first node (station name) cant be remove
this.mnuAddNode.Name = "mnuAddNode";
this.mnuAddNode.Size = new System.Drawing.Size(140,
22);
this.mnuAddNode.Text = "&Add node";
this.mnuAddNode.Click += new
System.EventHandler(this.mnuAddNode_Click);
this.mnuTextFile.Items.AddRange(new
System.Windows.Forms.ToolStripItem[] {
this.mnuAddNode});
this.mnuTextFile.Name = "mnuTextFile";
this.mnuTextFile.Size = new
System.Drawing.Size(141, 70);

}
else
{
// The first node (station name) cant be remove
this.mnuRemove.Name = "mnuRemove";
this.mnuRemove.Size = new System.Drawing.Size(140,
22);
this.mnuRemove.Text = "&Remove node";
this.mnuRemove.Click += new
System.EventHandler(this.mnuRemove_Click);
this.mnuAddNode.Name = "mnuAddNode";
this.mnuAddNode.Size = new System.Drawing.Size(140,
22);
this.mnuAddNode.Text = "&Add node";
this.mnuAddNode.Click += new
System.EventHandler(this.mnuAddNode_Click);
this.mnuEdit.Name = "mnuEdit";
this.mnuEdit.Size = new System.Drawing.Size(140,
22);
this.mnuEdit.Text = "&Edit Node";
this.mnuEdit.Click += new
System.EventHandler(this.mnuEdit_Click);
this.mnuTextFile.Items.AddRange(new
System.Windows.Forms.ToolStripItem[] {
this.mnuRemove,
this.mnuEdit,
this.mnuAddNode});
this.mnuTextFile.Name = "mnuTextFile";
this.mnuTextFile.Size = new
System.Drawing.Size(141, 70);
}
this.mnuTextFile.SuspendLayout();
this.mnuTextFile.ResumeLayout(false);
//Show menu
mnuTextFile.Show(treeView1, p);

// Highlight the selected node.
treeView1.SelectedNode = m_OldSelectNode;
m_OldSelectNode = null;
}
}
}
// contextmenu, same functionality as buttons
private void mnuAddNode_Click(object sender, EventArgs e)
{
btAddChild_Click(sender, e);
}
// contextmenu, same functionality as buttons
private void mnuRemove_Click(object sender, EventArgs e)
{
btRemove_Click(sender, e);
}
// contextmenu, same functionality as buttons
private void mnuEdit_Click(object sender, EventArgs e)
{
bEditNode_Click(sender, e);
}
 

Lesen sie die antworten

#1 Pascal Suter
22/10/2007 - 13:25 | Warnen spam
Jetzt habe ich ein bisschen rumgebastelt und es geht...allerdings weiss ich
nicht warum...habe eigentlich andere Sachen geàndert;)

Ähnliche fragen