C# 如何订阅双击?

C# 如何订阅双击?,c#,xna,double-click,C#,Xna,Double Click,我正试图找到一种订阅XNA中双击事件的方法,谷歌搜索得到了与winforms相关的东西,但事实并非如此,我无法使用它 使用Timespan并猜测电脑上双击的超时时间不是很可靠 默认的XNA输入系统也有这样一个小缺陷:有时在更新之间按键或鼠标点击会丢失,这会破坏游戏高负载时刻双击的可靠性 如何订阅.net中的双击事件 “不使用控件类事件”被删除,因为实际上有一种方法可以使用该类(请参见我的答案)。您可以创建自己的双击检查器,如中所述 因此,将上述方法添加到XNA代码中,您可以获得如下所示的用户默

我正试图找到一种订阅XNA中双击事件的方法,谷歌搜索得到了与winforms相关的东西,但事实并非如此,我无法使用它

使用
Timespan
并猜测电脑上双击的超时时间不是很可靠

默认的XNA输入系统也有这样一个小缺陷:有时在更新之间按键或鼠标点击会丢失,这会破坏游戏高负载时刻双击的可靠性

如何订阅.net中的双击事件



“不使用
控件
类事件”被删除,因为实际上有一种方法可以使用该类(请参见我的答案)。

您可以创建自己的双击检查器,如中所述

因此,将上述方法添加到XNA代码中,您可以获得如下所示的用户默认双击时间

const double TimerDelay = (double)GetDoubleClickTime();

我刚想到这个:

using wf = System.Windows.Forms;

wf.Form form = (wf.Form)wf.Control.FromHandle(this.Window.Handle);
form.MouseDoubleClick += new wf.MouseEventHandler(form_MouseDoubleClick);

因此,在XNA中确实有一种方法可以使用
控件
类:)

您可以创建自己的输入类和句柄。如果链接方法假设使用预设的默认间隔,我自己更喜欢单击之间的时间间隔小一点,但有些人可能喜欢更大的间隔,这意味着他们的双击时间不对,这可能会很不方便,所以我想要“真正的”双击。你可以选择让用户更改设置。要双击系统,可以使用(参考Windows.Forms assembly)。如果不想引用Windows.Forms程序集,可以使用P/Invoke(User32.dll中的GetDoubleClickTime()方法,该方法返回用户在其计算机上设置的毫秒数)。但是有没有办法订阅game window的双击事件呢?没问题,但我找到了一个更简单的方法,可以为您工作(请检查我的答案),并且可以使用用户默认的双击时间。我相信winforms在Xbox上不起作用,所以如果您计划在Xbox上发布游戏,那么您应该自己制作。这很简单,只要看看在每次点击后的特定时间段内是否还有其他点击。我不确定Xbox中是否有鼠标支持或双击。如果您要使用win forms library,您的游戏将不会加载。如果您只使用xna输入库来使用鼠标,它将很好地加载。无论如何,这个应用程序是一个图像查看器,所以它只是PC。
const double TimerDelay = (double)GetDoubleClickTime();
using wf = System.Windows.Forms;

wf.Form form = (wf.Form)wf.Control.FromHandle(this.Window.Handle);
form.MouseDoubleClick += new wf.MouseEventHandler(form_MouseDoubleClick);