双击vs单击 - 这些是互斥的

时间:2009-06-09 15:46:07

标签: wpf user-interface gui-designer

任何人都可以命名一个应用程序的实例,其中点击一个实体(比如图像)做一件事,但如果你双击它会做一些不同的事情吗?

我能找到的唯一例子是双击iTunes中的曲目,然后选择它(单击功能),然后播放它(双击功能),暗示(逻辑上)双击是超集(包含单击)。

基本上,我被要求实现(在WPF中)单击图像单击做一件事和图像双击做另一件事我不确定这是否在概念上是正确的。

如果某人有一个明智地做这件事的例子会受到赞赏吗?

8 个答案:

答案 0 :(得分:17)

从Windows消息传递的角度来看,双击始终会首先生成单击消息; Windows无法提前预测另一次点击会及时将其变为双击。我无法想象WPF会向你隐瞒这一物理事实。

答案 1 :(得分:10)

回答直接问题:Double Click vs Single Click - 这些是互斥的吗?答案是否定的,由于Windows需要用鼠标解释您的行为的方式,这些并不相互排斥。

然而,在回答有关双击不包括单击行为的先例的更模糊的问题时[即这两个事件表现出相互排斥的行为],Windows中有一些特定事件似乎表现出您所询问的行为。

例如 - 任务栏小程序:

  • 单击通常会打开该项目的快捷菜单。
  • 双击通常会打开该任务栏项链接到的应用程序的属性菜单,而无需打开快捷菜单。

任务栏时钟:

  • 单击无效。
  • 双击打开日期和时间属性。

然而,您可能会注意到需要一些时间来回复您的请求,而其他人已经注意到暂停是Windows等待您查看是否要双击。如果不双击,则会触发Click行为。如果您双击,则会触发DoubleClick行为。在这些特定情况下,认为适合具有相互排斥的行为,并且可能存在其他一些行为。

我认为这实际上取决于不同行为是“正确”还是“错误”的情况 - 我不认为你可以在所有中不可思议地说一个是对的,另一个是错的情况。如果您希望展示的行为从用户的角度来看具有良好的逻辑意义[不是从您自己的程序员角度来看],那么请确保行为互相排斥;但是,如果它对用户没有良好的逻辑意义,那么就避免它。

答案 2 :(得分:1)

最明显的似乎是Finder / Explorer,单击文件选择它并双击打开它。这类事情有很多先例,人们通过将其包含在操作系统级别来预期双击以执行不同的操作而受到良好的训练。

  • 文本选择(几乎每个应用程序都存在) - 单击以放置光标,双击选择单词,三击以选择整行。
  • 资源管理器/查找程序 - 单击以选择文件,双击打开它。
  • Outlook - 单击以预览电子邮件,双击以在新窗口中打开。

答案 3 :(得分:1)

Cooliris中,如果单击墙中的单元格,则会选中该单元格。如果双击图像,它将从该图像开始转换为全屏幻灯片放映模式。

答案 4 :(得分:1)

双点击做一些与单击行为无关的事情通常是一种糟糕的模式。为了区分单击和双击,您必须等待片刻以查看第二次点击是否到达。当你只是单击某个东西时,这可能会导致令人不安的延迟。

Raymond Chen在这个问题上有一个很好的blog post,包括如何做到这一点。

但我会首先推翻设计师。

答案 5 :(得分:0)

Microsoft Excel。将鼠标移到未选中的单元格上。

单击=单元格选择

双击=进入该单元格的编辑模式

答案 6 :(得分:0)

在这里结束其他人的说法,双击不会“取消”单击。

因此,您不应该在双击事件中执行某些操作,该事件取决于通过单击更改的状态 - 因为始终首先执行单击!

反过来说,您可以依赖单击启动双击操作后的状态。示例:单击文件列表中的单击选择文件,因此在双击事件中您知道已单击的文件已被选中...

答案 7 :(得分:0)

private void OnItemMouseDown(object sender, MouseButtonEventArgs e) {
    if(e.ClickCount==2) {
        // DoubleClick Function
    }

    if(e.ClickCount==1) {
        // Click Function
    }
}