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

时间:2009-01-23 14:41:38

标签: c# .net winforms treeview double-click

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

---儿童

---儿童

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

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

我该如何解决这个问题?我不应该使用NodeMouseDoubleClick或..?

我看到反馈报告 Problem with TreeView DoubleClick event after expanding/collapsing caused change of scroll 中也解释了这一点。

2 个答案:

答案 0 :(得分:15)

NodeDoubleClick没问题,但使用e.Node而不是this.treeView1.SelectedNode

答案 1 :(得分:7)

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

Ben Shneiderman Designing the User Interface 八个接口设计黄金规则中的第一个:

  
      
  1. 努力保持一致性。
  2.         

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

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