У меня проблема с выбранным узлом в виде дерева.
Вот два сценария. (# 2 вызывает мою проблему)
1 -
Если я выберу «уровень» узла, нажмите F2, измените метку и нажмите Enter. SelectedNode внутри AfterLabelEdit изменится. SelectedNode изменится с «Level1» на «Root».
2 -
Если я выберу «уровень» узла, нажмите F2, измените метку, но щелкните где-нибудь в древовидной структуре, выбранный узел никогда не изменится.
Является ли событие событием, которое вызывает проблему?
Я создал небольшой тестовый проект, чтобы показать проблему.
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];
}
}