标题:[求助]如何添加treeview中子节点的双击事件?
只看楼主
bhbh113
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-5-22
 问题点数:0 回复次数:5 
[求助]如何添加treeview中子节点的双击事件?
    我在一个窗体中添加了一个treeview,并向其中添加了几个子节点。但是我发现不能像平时添加button时双击控件即可编写单击控件的代码。该如何添加子节点的单击事件代码呢?大家都用过QQ,我想做的就是像QQ中双击好友头像就出现对话框的程序。等高手指点。
搜索更多相关主题的帖子: 中子 节点 treeview 单击 对话框 
2007-10-10 23:02
jxnuwy04
Rank: 2
等 级:新手上路
威 望:4
帖 子:768
专家分:0
注 册:2006-9-15
得分:0 
事件里应该可以找得到双击事件吧.

------------------不为别的,就为你,我的理想!-----------------
2007-10-11 08:22
cobby
Rank: 1
等 级:新手上路
威 望:1
帖 子:565
专家分:0
注 册:2007-7-11
得分:0 

树里面有单击事件,单击某个节点后,事件就激发。当然,你还需要自己写代码来判断具体是哪个节点被单击。我的代码给你作个参考

int id1 = 0, id2 = 0;
//id1为根节点序号,id2为夺级节点序号

TreeNode tn = new TreeNode();
tn = treeView1.SelectedNode;
int lev = getlev(tn); //当前选中节点所在层数
id1 = Convert.ToInt32(tn.Parent.Name); //获取根节点序号
id2 = Convert.ToInt32(tn.Name); //获取二级节点序号


public int getlev(TreeNode tn) //计算当前选中节点所在层数
{

if (tn.Parent != null) //当前节点有父节点
{
return node_level + getlev(tn.Parent) + 1;
}
else
return 1;
}


努力成为菜鸟!
2007-10-11 09:00
crazymk
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-8-30
得分:0 
查看控件的property。然後找到event列表。雙擊妳要添加的event。

すばらしいコードを書き出すのは楽しい事です
2007-10-11 09:15
bhbh113
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-5-22
得分:0 
[QUOTE]

事件里应该可以找得到双击事件吧.

[/QUOTE]

双击事件当然找得到,但那是针对整个treeview的不是针对单个节点的。

感谢cobby的代码,虽然那不能解决我的问题。我又查了很多资料,最后我得出的触发节点单击事件的是这样的:

[CODE]private Point pi; //用pi记录光标所在的位置

private void treeView1_MouseMove(object sender, MouseEventArgs e) //得到光标所在的位置
{
pi = new Point(e.X, e.Y);
}

private void treeView1_DoubleClick(object sender, EventArgs e) //从光标所在的位置得到该位置上的节点
//由此触发节点双击事件
{
TreeNode node = this.treeView1.GetNodeAt(pi);
if (pi.X < node.Bounds.Left || pi.X > node.Bounds.Right)
{
textBox1.Text = "不触发事件";
}
else
{
textBox1.Text = "触发事件";
}
}[/CODE]
我的大致思路就是这样,不知道大家有没有更好的方法。


2007-10-11 13:08
小亮1201
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-11
得分:0 
[QUOTE]
事件里应该可以找得到双击事件吧.


双击事件当然找得到,但那是针对整个treeview的不是针对单个节点的。

感谢cobby的代码,虽然那不能解决我的问题。我又查了很多资料,最后我得出的触发节点单击事件的是这样的:

[CODE]private Point pi; //用pi记录光标所在的位置

private void treeView1_MouseMove(object sender, MouseEventArgs e) //得到光标所在的位置
{
pi = new Point(e.X, e.Y);
}

private void treeView1_DoubleClick(object sender, EventArgs e) //从光标所在的位置得到该位置上的节点
//由此触发节点双击事件
{
TreeNode node = this.treeView1.GetNodeAt(pi);
if (pi.X < node.Bounds.Left || pi.X > node.Bounds.Right)
{
textBox1.Text = "不触发事件";
}
else
{
textBox1.Text = "触发事件";
}
}[/CODE]
我的大致思路就是这样,不知道大家有没有更好的方法。
[/quote]没看懂你的思路,能不能再说详细点呢??
2013-04-20 09:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-176565-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.092829 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved