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