我自己的实现方法是,先添加节点,然后node.BeginEdit()
创建AfterLabelEdit事件,在该事件中进行排序。
但是我发现,在AfterLabelEdit事件中如果添加/移动节点就会导致莫名其妙的重新进入编辑状态
写不好的话就退不出来编辑状态了
以下简单的代码就会导致锁死在编辑状态
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
treeView1.TreeViewNodeSorter = new NodeSorter();
treeView1.LabelEdit = true;
} //在编辑结束验证时触发
private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
treeView1.Sort();
} //点击Button创建一个新的节点,并且进入可编辑状态
private void button1_Click(object sender, EventArgs e)
{
treeView1.Nodes.Add("NewNode").BeginEdit();
}
} public class NodeSorter : System.Collections.IComparer
{
public int Compare(object x, object y)
{
return (x as TreeNode).Text.CompareTo((y as TreeNode).Text);
}
}谁对这方面有研究,能给我提点建议吗?
创建AfterLabelEdit事件,在该事件中进行排序。
但是我发现,在AfterLabelEdit事件中如果添加/移动节点就会导致莫名其妙的重新进入编辑状态
写不好的话就退不出来编辑状态了
以下简单的代码就会导致锁死在编辑状态
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
treeView1.TreeViewNodeSorter = new NodeSorter();
treeView1.LabelEdit = true;
} //在编辑结束验证时触发
private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
treeView1.Sort();
} //点击Button创建一个新的节点,并且进入可编辑状态
private void button1_Click(object sender, EventArgs e)
{
treeView1.Nodes.Add("NewNode").BeginEdit();
}
} public class NodeSorter : System.Collections.IComparer
{
public int Compare(object x, object y)
{
return (x as TreeNode).Text.CompareTo((y as TreeNode).Text);
}
}谁对这方面有研究,能给我提点建议吗?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
treeView1.TreeViewNodeSorter = new NodeSorter();
treeView1.LabelEdit = true;
} private bool LabelEditMessage = false; //在编辑开始前触发
private void treeView1_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
{
if(!LabelEditMessage)
{
e.CancelEdit = true;
return;
}
LabelEditMessage = false;
} //在编辑结束验证时触发
private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
treeView1.Sort();
} //点击Button创建一个新的节点,并且进入可编辑状态
private void button1_Click(object sender, EventArgs e)
{
LabelEditMessage = true;
treeView1.Nodes.Add("NewNode").BeginEdit();
}
} public class NodeSorter : System.Collections.IComparer
{
public int Compare(object x, object y)
{
return (x as TreeNode).Text.CompareTo((y as TreeNode).Text);
}
}但是我始终无法让TreeView在添加节点后立即选择这个节点,他总是选择父节点。
因为增加节点Treeview会刷新。