是否热衷于在编辑节点(C#)时提交TreeView的更改?
时间:2020-03-05 18:56:01 来源:igfitidea点击:
我正在使用Microsoft的TreeView控件,并且尝试在编辑节点的标签时强制进行某种形式的数据更新,类似于网格的UpdateData。
基本上,在我的编辑器中,我有一个"保存"按钮和一个TreeView控件:我想要的是在TreeView中编辑节点的标签时,如果单击"保存"按钮,我希望能够提交该节点的标签。编辑。
解决方案
回答
节点标签编辑是通过一个文本框执行的,当该文本框失去焦点时,名称更改将被提交为该节点的新标签。因此,如果我们单击的"保存"按钮成为焦点,那么它将自动导致更新,因为文本框将失去焦点。
如果"保存"按钮没有聚焦,则需要处理"保存"按钮的单击事件,并要求树结束当前的标签编辑。如果没有方法/属性,则可以致电以要求完成标签编辑,因此我们有两种选择。如果树视图具有焦点,则将焦点放在其他位置。或者,再次关闭/打开标签编辑...
treeView.LabelEdit = false; treeView.LabelEdit = true;
回答
我会接受答案,即使它没有真正记录在案:它是否存在或者没有这种方法?我们实际上没有回答,只是将问题转给了我。
同时,找到了相同的破解解决方案,将焦点移到其他控件上(不是很优雅,但是可以工作),尽管这对我来说有点困难,因为我将TreeView用作UserControl的一部分。
回答
我们真的需要保存按钮吗?
例如,我们可以通过侦听TreeView的KeyDown事件中的"返回"键来侦听节点编辑的结束。如果我们正在编辑某些内容(使用SelectedNode.IsEditing查找),则知道我们已提交。然后,我们可以将其提交到dataupdate东西。如果我们希望能够编辑许多不同的节点并在最后将它们全部保存,则需要将每个编辑的节点添加到某种类型的集合中,然后在单击"保存"按钮时迭代该集合。