是否热衷于在编辑节点(C#)时提交TreeView的更改?

是否热衷于在编辑节点(C#)时提交TreeView的更改?

Hot to commit changes for a TreeView while editing a node (C#)?

我正在使用Microsoft的TreeView控件,并且试图在编辑节点的标签时强制进行某种形式的数据更新,类似于网格的UpdateData。

基本上,在我的编辑器中,我有一个"保存"按钮和一个TreeView控件:我想要的是在TreeView中编辑节点的标签时,如果单击"保存"按钮,我希望能够提交该节点的标签。我正在编辑的标签。


您真的需要保存按钮吗?

您可以侦听节点编辑的结尾-例如,通过侦听TreeView的KeyDown事件中的"返回"键。如果您正在编辑某些内容(通过SelectedNode.IsEditing查找),那么您知道自己已提交。然后,您可以将其提交到您的dataupdate东西。如果您希望能够编辑许多不同的节点并将其全部保存在最后,则需要将每个已编辑的节点添加到某种类型的集合中,然后在单击"保存"按钮时迭代该集合。


即使答案没有真正记载,我也会接受:答案是否存在或没有这种方法?您实际上没有对此回答,只是将问题转给了我。

同时找到了相同的破解解决方案,将焦点移到其他控件上(不是很优雅,但是可以工作),尽管这对我来说有点困难,因为我将TreeView用作UserControl的一部分。


节点标签编辑是通过一个文本框执行的,当该文本框失去焦点时,名称更改将被提交为该节点的新标签。因此,如果您单击的"保存"按钮成为焦点,那么它将自动导致更新,因为文本框将失去焦点。

如果"保存"按钮没有聚焦,则需要处理"保存"按钮的点击事件,并要求树结束当前的标签编辑。如果没有方法/属性,则可以致电以要求完成标签编辑,因此您有两种选择。如果树视图具有焦点,则将焦点放在其他位置。或者,再次关闭/打开标签编辑...

1
2
treeView.LabelEdit = false;
treeView.LabelEdit = true;

推荐阅读