2008-09-16 88 views
1

我在玩微软的TreeView控件,我试图在编辑节点标签时强制某种数据更新,类似于网格的UpdateData。基本上,在我的编辑器中,我有一个保存按钮和这个TreeView控件:我想要的是当我在TreeView中编辑节点的标签时,如果单击保存按钮我希望能够提交节点的标签我正在编辑。Hot在编辑节点(C#)时提交TreeView更改?

回答

0

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

如果'保存'按钮不占用焦点,则需要处理'保存'按钮的点击事件,并要求树结束当前标签编辑。如果没有可调用的方法/属性来请求标签编辑完成,那么您有两种选择。如果树视图具有焦点,则将焦点放在其他地方。或者关闭/重新标签编辑...

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

我会接受,即使它不是真的记录的答案:它或者它没有这样的方法?你实际上没有回答这个问题,只是把问题回答给我。

同时发现了相同的hack-ish解决方案,强制将焦点放在其他控件上(虽然对于我来说使用TreeView作为UserControl的一部分,但对我来说更难一些)。

0

你确实需要保存按钮吗?

您可以监听节点编辑的结束 - 例如通过侦听TreeView的KeyDown事件中的“返回”键。如果你正在编辑的东西(找出SelectedNode.IsEditing),那么你知道你有一个提交。然后你可以将它提交给你的dataupdate的东西。如果您希望能够编辑许多不同的节点并将其全部保存到最后,那么您需要将每个已编辑的节点添加到某种集合中,然后当您单击保存按钮时迭代该集合。