除了调用TreeNode的.Collapse()方法或TreeView的.CollapseAll()方法之外,还有什么原因会导致TreeView折叠?
在我开发的应用程序中,TreeView表现不正常。TreeView仅维护两个级别。选择父节点的子节点时,所有其他节点立即折叠。但是,我的代码中没有任何.Collapse()或.CollapseAll()方法调用!
TreeView的所有属性都保持默认值,除了.LabelEdit属性设置为true。TreeView具有一些代码与AfterLabelEdit事件相关联,用于简单的验证/MessageBox例程。
我尝试过:
- 钩住TreeView的BeforeCollapse事件并引发e.CancelAction标志。 - 在TreeView的AfterSelect事件中手动展开所有节点。(这作为实验很好,但我不打算完全禁止节点折叠!)
在代码的许多点上,我正在逐个节点地迭代TreeView以检查属性。但是,没有添加或删除节点。用户进行选择时修改的唯一TreeNode属性是.ImageIndex和.SelectedImageIndex。
除了上面提到的两种解决方案外,我没有任何线索可以说明此错误的原因。即使无法实现任何解决方案,是否有人知道捕获折叠的正确方法?(我已经尝试在BeforeCollapse事件中设置断点,但除非用户通过鼠标或键盘明确折叠节点,否则不会触发它。)
我发现问题是由于更改任何TreeNode的.SelectedImageIndex属性引起的。更改此属性会导致所有其他节点折叠。
我尝试使用.BeginUpdate()和.EndUpdate()调用包围.SelectedImageIndex属性修改代码,但没有效果。
如何避免这种情况发生?
在我开发的应用程序中,TreeView表现不正常。TreeView仅维护两个级别。选择父节点的子节点时,所有其他节点立即折叠。但是,我的代码中没有任何.Collapse()或.CollapseAll()方法调用!
TreeView的所有属性都保持默认值,除了.LabelEdit属性设置为true。TreeView具有一些代码与AfterLabelEdit事件相关联,用于简单的验证/MessageBox例程。
我尝试过:
- 钩住TreeView的BeforeCollapse事件并引发e.CancelAction标志。 - 在TreeView的AfterSelect事件中手动展开所有节点。(这作为实验很好,但我不打算完全禁止节点折叠!)
在代码的许多点上,我正在逐个节点地迭代TreeView以检查属性。但是,没有添加或删除节点。用户进行选择时修改的唯一TreeNode属性是.ImageIndex和.SelectedImageIndex。
除了上面提到的两种解决方案外,我没有任何线索可以说明此错误的原因。即使无法实现任何解决方案,是否有人知道捕获折叠的正确方法?(我已经尝试在BeforeCollapse事件中设置断点,但除非用户通过鼠标或键盘明确折叠节点,否则不会触发它。)
我发现问题是由于更改任何TreeNode的.SelectedImageIndex属性引起的。更改此属性会导致所有其他节点折叠。
我尝试使用.BeginUpdate()和.EndUpdate()调用包围.SelectedImageIndex属性修改代码,但没有效果。
如何避免这种情况发生?