我有一个常规的.NET Windows窗体树视图控件.节点设置如下:
组
- -儿童
- -儿童
如果我双击折叠的组节点,它会展开(如您所料)并触发NodeMouseDoubleClick事件,如果所选节点不是组节点,我的代码会执行某些操作.
当组位于树视图的底部附近时会出现问题,因此当我双击组节点时,它将需要树视图垂直扩展以使子节点适合视图.在这种情况下,如果我双击组节点,当它扩展并调整树视图时,我的鼠标光标位于子节点上(它必须将所有内容都推到一起),这会导致NodeMouseDoubleClick认为子节点被选中,这会导致非常奇怪的行为.
我怎么能绕过这个?我不应该使用NodeMouseDoubleClick或..?
我看到它也在反馈报告中解释了扩展/折叠导致滚动更改后TreeView DoubleClick事件的问题.
该NodeDoubleClick
是好的,但不是使用e.Node
,使用this.treeView1.SelectedNode
.
双击TreeNode是一个鼠标手势,TreeView已经"使用"它来折叠/扩展节点微软没有像Apple那样推动UI标准,而且在某种程度上微软暴露了NodeDoubleClick是令人失望的,因为他们鼓励您使用自己的自定义行为修改TreeView.这可能会误导最终用户,他们期望来自共同控制的共同行为.
从设计用户界面由本·谢奈德曼,第一界面设计的八大黄金法则:
力求一致性.
在类似情况下应该要求采取一致的行动顺序; 在提示,菜单和帮助屏幕中应使用相同的术语; 应始终采用一致的命令.
长话短说,也许你不应该使用NodeMouseDoubleClick.