1、在界面上添加【treeView】的控件,并调整为合适大小。
2、在程序界面上加入其它需要的控件:包括,用于输入父节点个数和子节点个数的2个输入框;生成节点的按钮、删除节点的按钮、清除所有节点的按钮;输出日志信息的文本框。
3、编辑代码,输入【生成节点】的代码;获取子节点和父节点的个数,使用循环添加父节点和子节点。
4、编辑【清除所有节点】的代码。
5、编辑【删除所选节点】的代码。
6、点击【treeview】控件,在属性中选择行为,从行为列表中选择【afterselect】双击,在代码编辑页面,添加节点被选择后的代码。
7、输入父节点和子节点数量分别为3和3,生成树结构。确认生成成功。
那是因为你每次在触发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);
}
}
^_^!
这个问题我也遇到过,原因是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转变成你鼠标点的那个节点就没问题了。
这样一定可以解决,解决不了是不可能的
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
TreeNode a = e.Node;
string nodename =a.Text;
}
添加复选框和AfterCheck事件,每当发生点击选中事件,就可以获取选中的节点e.node;这样就可以对所选中的节点进行任意处理;如获取节点的TEXT内容;
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。你的串号我已经记下,采纳后我会帮你制作
在treeview的SelectedNodeChanged事件里面写,可以直接获取到
TreeNode treeNode = TreeView1.SelectedNode;
string va = treeNode.Value;这样就ok了