当前位置:  开发笔记 > 编程语言 > 正文

.NETView中的TreeView双击行为#C#

如何解决《.NETView中的TreeView双击行为#C#》经验,为你挑选了2个好方法。

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

- -儿童

- -儿童

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

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

我怎么能绕过这个?我不应该使用NodeMouseDoubleClick或..?

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



1> BFree..:

NodeDoubleClick是好的,但不是使用e.Node,使用this.treeView1.SelectedNode.



2> 小智..:

双击TreeNode是一个鼠标手势,TreeView已经"使用"它来折叠/扩展节点微软没有像Apple那样推动UI标准,而且在某种程度上微软暴露了NodeDoubleClick是令人失望的,因为他们鼓励您使用自己的自定义行为修改TreeView.这可能会误导最终用户,他们期望来自共同控制的共同行为.

设计用户界面本·谢奈德曼,第一界面设计的八大黄金法则:

    力求一致性.

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

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


如果节点没有子节点,则对节点表示的内容执行某些操作是有意义的.这看似一致,或者至少是合乎逻辑的.当有子代的节点代表目录而没有内容的节点代表文件时,我这样做.双击文件节点会导致文件打开.
推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有