【发布时间】:2011-11-23 01:29:42
【问题描述】:
我在树视图中选择的节点有问题。
这里有两种情况。 (#2是我的问题)
1 - 如果我选择节点“级别”,请按 F2,更改标签并按 Enter。 AfterLabelEdit 中的 selectedNode 将发生变化。 selectedNode 将从“Level1”变为“Root”。
2 - 如果我选择节点“级别”,按 F2,更改标签但单击树视图上的某个位置,则 selectedNode 将永远不会改变。
是导致问题的事件触发吗?
我创建了一个小型测试项目来展示手头的问题。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Load += new EventHandler(Form1_Load);
this.treeView1.KeyDown += new KeyEventHandler(Form1_KeyDown);
this.treeView1.AfterLabelEdit += new NodeLabelEditEventHandler(treeView1_AfterLabelEdit);
}
void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
Console.WriteLine(this.treeView1.SelectedNode);
this.treeView1.SelectedNode = this.treeView1.SelectedNode.Parent;
Console.WriteLine(this.treeView1.SelectedNode);
TreeNode test = this.treeView1.SelectedNode;
}
void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (this.treeView1.SelectedNode != null)
{
if (e.KeyData == Keys.F2)
{
this.treeView1.SelectedNode.BeginEdit();
}
}
base.OnKeyDown(e);
}
void Form1_Load(object sender, EventArgs e)
{
this.treeView1.Nodes.Add(new TreeNode("root"));
this.treeView1.Nodes[0].Nodes.Add(new TreeNode("level1"));
this.treeView1.Nodes[0].Nodes[0].Nodes.Add(new TreeNode("level2"));
this.treeView1.SelectedNode = this.treeView1.Nodes[0];
this.treeView1.SelectedNode.ExpandAll();
this.treeView1.SelectedNode = this.treeView1.Nodes[0].Nodes[0];
}
}
【问题讨论】:
标签: c# winforms treeview treenode