C#treeView单击事件选中节点

privatevoidForm1_Load(objectsender,EventArgse){TreeNodenewNode12=treeView1.Nodes.Add(... private void Form1_Load(object sender, EventArgs e)
{
TreeNode newNode12 = treeView1.Nodes.Add("大家好");//一级节点
newNode12.Nodes.Add("你好啊1");
newNode12.Nodes.Add("你好啊2");
newNode12.Nodes.Add("你好啊3");
}

private void treeView1_Click(object sender, EventArgs e)
{
MessageBox.Show(treeView1.SelectedNode.Text);
}

弹出的选项和选择的选项不符合。。怎么解决
展开
 我来答
刺友互
高粉答主

2019-07-12 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:68.5万
展开全部

1、在界面上添加【treeView】的控件,并调整为合适大小。

2、在程序界面上加入其它需要的控件:包括,用于输入父节点个数和子节点个数的2个输入框;生成节点的按钮、删除节点的按钮、清除所有节点的按钮;输出日志信息的文本框。

3、编辑代码,输入【生成节点】的代码;获取子节点和父节点的个数,使用循环添加父节点和子节点。

4、编辑【清除所有节点】的代码。

5、编辑【删除所选节点】的代码。

6、点击【treeview】控件,在属性中选择行为,从行为列表中选择【afterselect】双击,在代码编辑页面,添加节点被选择后的代码。

7、输入父节点和子节点数量分别为3和3,生成树结构。确认生成成功。

zzc3231
推荐于2017-11-23 · 超过21用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:47.2万
展开全部
那是因为你每次在触发Click的时候Treeview选择的节点还是上次选中的节点
如果你对同一节点点击两次以上就会显示正确的节点名称了!
当然还有其他的解决方法:
private void Form1_Load(object sender, EventArgs e)
{
treeView1.Nodes.Add(new TreeNode("父节点"));
TreeNode fnode = treeView1.Nodes[0];
fnode.Nodes.Add("子节点1");
fnode.Nodes.Add("子节点2");
fnode.Nodes.Add("子节点3");
}

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode != null)
{
MessageBox.Show(treeView1.SelectedNode.Text);
}
}
^_^!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ko85363974
2010-11-25 · TA获得超过480个赞
知道答主
回答量:194
采纳率:0%
帮助的人:168万
展开全部
这个问题我也遇到过,原因是SelectedNode并不是你刚点上去的那个节点,而是之前选中的那一个。解决方法是在MouseDown事件里面写如下代码:
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if ((sender as TreeView) != null)
{
treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);
}
}
MouseDown事件发生在Click事件之前,在这个时候就把SelectedNode转变成你鼠标点的那个节点就没问题了。
这样一定可以解决,解决不了是不可能的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mxbec32
2010-11-25 · TA获得超过547个赞
知道答主
回答量:224
采纳率:0%
帮助的人:166万
展开全部
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
TreeNode a = e.Node;

string nodename =a.Text;

}
添加复选框和AfterCheck事件,每当发生点击选中事件,就可以获取选中的节点e.node;这样就可以对所选中的节点进行任意处理;如获取节点的TEXT内容;
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。你的串号我已经记下,采纳后我会帮你制作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
亲切还文雅丶烤红薯s
2010-11-25 · 超过17用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:0
展开全部
在treeview的SelectedNodeChanged事件里面写,可以直接获取到
TreeNode treeNode = TreeView1.SelectedNode;
string va = treeNode.Value;这样就ok了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式