.net中等效的Treeview.OnChange事件是什么?

时间:2012-07-02 13:15:00

标签: c# .net events treeview

我对winform有树视图控制,需要为它实现onChange事件。但是,看起来它没有,只有onChangeUI。

如果树视图不支持onChange事件,它在.NET中的等价物。

我搜索过MSDN Library但没有找到任何信息。

更新:备注我正在为.net转换win32程序。

提前致谢,

2 个答案:

答案 0 :(得分:3)

在Windows窗体TreeView控件中,对选择更改的支持有点受限。

基本上,有一对事件(BeforeSelectAfterSelect)允许您在选择树节点时做出反应。 BeforeSelect允许您取消新选择,AfterSelect不允许(因为它在提交新选择后发生)。

但是,当取消选择节点时,不会触发这些事件。要检测该情况,您必须处理通用MouseUp事件并检查所单击节点的IsSelected属性以获取实际选择状态。

答案 1 :(得分:1)

这是包装本机Windows控件的包装类中的常见限制。这只会为您无法了解的内容生成通知。像用户可以做的任何事情一样影响控件。它忽略了所做事情的通知,其基本理念是你不必提醒你已经知道的事情。

TreeView当然是这种情况,用户无法添加任何节点。只有你可以。节点中显示的文本也是如此。没有事件告诉你文本改变了。除非在用户编辑节点的非常具体的情况下,AfterLabelEdit事件。

您可以从TreeView派生自己的类,并添加一个Change事件和触发它的OnChange()方法。您可以编写代码来调用该方法。请注意,这很难做到,TreeNodeCollection类没有虚拟方法,因此您无法覆盖它们以检测更改节点的客户端代码。实际上,最好不要编写代码,只需在修改TreeView内容的任何方法中生成表单中的内部事件。