1

我在 winform 上有树视图控件,需要为其实现 onChange 事件。但是,它似乎没有,只有 onChangeUI。

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

我搜索了 MSDN Library 并没有找到任何信息。

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

提前致谢,

4

2 回答 2

3

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

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

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

于 2012-07-02T13:31:34.287 回答
1

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

TreeView 肯定是这种情况,用户不能添加任何节点。只有你可以。节点中显示的文本也是如此。没有事件可以告诉您文本已更改。除了在用户编辑节点的非常特殊的情况下,AfterLabelEdit 事件。

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

于 2012-07-02T14:27:22.557 回答