ContextMenu+Treeview 高手请进
我在一个winform中托了2个控件,一个TreeView,,一个是ContextView,
TreeView中的Node是动态生成的
并且指定每个Node的ContextMenu都是ComtextMenu1
ContextMenu中的Item的click函数如何来区分这写Node呢?
比如:Node1的click函数显示Node1的name
Node2 的Click函数显示Node2的name
问题点数:100、回复次数:9Top
1 楼xxuu503(中国没有prison break只是因为the company不让拍)回复于 2006-05-01 05:52:11 得分 20
在ContextMenu的PopUp事件中
写如下代码:
MessageBox.Show(this.contextMenu1.SourceControl.ToString());Top
2 楼Knight94(愚翁)回复于 2006-05-01 08:33:42 得分 80
you can use "MouseDown" event to get current tree node.Top
3 楼wdcszl(Leithon)回复于 2006-05-01 10:27:39 得分 0
愚翁,我也想到这么做了,但是没有实现,能给个例子么?Top
4 楼Knight94(愚翁)回复于 2006-05-01 10:47:32 得分 0
Sample code as follows:
private TreeNode tnSelected = null;
-------In mouse down event---------
tnSelected = yourTreeView.GetNodeAt( e.X, e.Y );
Top
5 楼xxuu503(中国没有prison break只是因为the company不让拍)回复于 2006-05-01 11:54:15 得分 0
恩,我写的不对Top
6 楼wdcszl(Leithon)回复于 2006-05-01 13:57:14 得分 0
this.treeView1.ContextMenuStrip = this.contextMenuStrip1;
this.treeView1.Location = new System.Drawing.Point(12, 143);
this.treeView1.Name = "treeView1";
treeNode1.ContextMenuStrip = this.contextMenuStrip1;
treeNode1.Name = "test";
treeNode1.Text = "Node1";
treeNode2.ContextMenuStrip = this.contextMenuStrip1;
treeNode2.Name = "123";
treeNode2.Text = "Node0";
treeNode3.ContextMenuStrip = this.contextMenuStrip1;
treeNode3.Name = "122";
treeNode3.Text = "Node1";
this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode1,
treeNode2,
treeNode3});
this.treeView1.Size = new System.Drawing.Size(121, 97);
this.treeView1.TabIndex = 2;
..........................................................................
this.toolStripMenuItem3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.toolStripMenuItem3_Click);
...........................
private TreeNode tn = null;
private void toolStripMenuItem3_Click(object sender, System.Windows.Forms.MouseEventArgs e)
{
tn = this.treeView1.GetNodeAt(e.X,e.Y);
MessageBox.Show("Click! "+tn.Name);
}
点哪个节点都显示"Click!test"啊,帮忙看下哪个地方不对
Top
7 楼xxuu503(中国没有prison break只是因为the company不让拍)回复于 2006-05-01 14:04:23 得分 0
我觉得渔翁说的是在treeview的mouse down事件里边判断是否右键
然后赋值
最后在contextmenu里边显示Top
8 楼Knight94(愚翁)回复于 2006-05-01 14:11:46 得分 0
tn = this.treeView1.GetNodeAt(e.X,e.Y);
这句的位置写的不对,应该在treeview的mousedown事件去做Top
9 楼wdcszl(Leithon)回复于 2006-05-01 14:19:51 得分 0
搞定,谢谢2位Top




