14

我有一个常规的 .NET Windows 窗体树视图控件。节点设置如下:

团体

- -孩子

- -孩子

如果我双击折叠的 Group 节点,它会展开(如您所料)并触发 NodeMouseDoubleClick 事件,如果所选节点不是组节点,我的代码会在其中执行某些操作。

当组位于树视图底部附近时会出现问题,因此当我双击组节点时,它需要树视图垂直展开以使子节点适合视图。在这种情况下,如果我双击 Group 节点,当它展开并调整树视图时,我的鼠标光标位于子节点上(它必须向上推所有内容),这会导致 NodeMouseDoubleClick 认为子节点被选中,这会导致非常奇怪的行为。

我怎样才能解决这个问题?我不应该使用 NodeMouseDoubleClick 还是..?

我看到它也在反馈报告中解释了展开/折叠后 TreeView DoubleClick 事件的问题导致滚动的变化

4

2 回答 2

16

NodeDoubleClick很好,但不要使用,e.Node使用this.treeView1.SelectedNode.

于 2009-01-23T15:30:41.797 回答
7

双击 TreeNode 是一种鼠标手势,TreeView 已经“使用”它来折叠/展开节点 Microsoft 没有像 Apple 那样推动 UI 标准,并且在某种程度上令人失望的是 Microsoft 公开了 NodeDoubleClick,因为他们鼓励您使用自己的自定义行为修改 TreeView。这可能会误导最终用户,他们期望通用控件具有通用行为。

来自Ben Shneiderman的《 Designing the User Interface》,界面设计的八条黄金法则中的第一条:

  1. 力求一致性。

在类似情况下,应要求采取一致的行动顺序;提示、菜单和帮助屏幕中应使用相同的术语;始终使用一致的命令。

长话短说,也许你不应该使用 NodeMouseDoubleClick。

于 2009-01-25T13:40:03.570 回答