在编辑节点 (C#) 时为 TreeView 提交更改很热?

Posted

技术标签:

【中文标题】在编辑节点 (C#) 时为 TreeView 提交更改很热?【英文标题】:Hot to commit changes for a TreeView while editing a node (C#)? 【发布时间】:2010-09-09 12:14:03 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

节点标签编辑是使用文本框执行的,当该文本框失去焦点时,名称的更改将作为节点的新标签提交。因此,如果您单击的“保存”按钮获得焦点,那么它将自动导致更新,因为文本框将失去焦点。

如果“保存”按钮没有获得焦点,则需要处理“保存”按钮的单击事件并要求树结束任何当前的标签编辑。如果没有方法/属性,您可以调用以请求标签编辑完成,因此您有两个选择。如果树视图有焦点,则将焦点放在其他地方。或者关闭/再次打开标签编辑...

treeView.LabelEdit = false;
treeView.LabelEdit = true;

【讨论】:

【参考方案2】:

即使没有真正记录在案,我也会接受答案:它有还是没有这样的方法?你实际上没有回答这个问题,只是把问题传给了我。

同时发现了相同的 hack-ish 解决方案,将焦点强制到其他一些控件(不是很优雅但有效),尽管这对我来说有点困难,因为我使用 TreeView 作为 UserControl 的一部分。

【讨论】:

【参考方案3】:

你真的需要保存按钮吗?

您可以监听节点编辑的结束 - 例如通过监听 TreeView 的 KeyDown 事件中的“返回”键。如果您正在编辑某些内容(使用 SelectedNode.IsEditing 查找),那么您知道您有一个提交。然后,您可以将其提交给您的数据更新内容。如果您希望能够编辑许多不同的节点并在最后保存它们,那么您需要将每个编辑的节点添加到某种集合中,然后当您单击保存按钮时遍历该集合。

【讨论】:

以上是关于在编辑节点 (C#) 时为 TreeView 提交更改很热?的主要内容,如果未能解决你的问题,请参考以下文章

C# treeview 实现选取并复制功能

C#中 treeview控件中点击展开那个小加号,同时就能选中展开的这个节点,怎么编辑代码??

C# treeview的节点前添加类似于checkbox

如何访问服务器上的 Jquery TreeView?

wpf中的treeview如何增加2级节点?在C#中如何添加?

c# treeview在指定名称下添加节点!怎么做?