用Gtk检测双击#

时间:2012-09-16 09:02:20

标签: c# mono mouseevent gtk# double-click

我在monodevelop 3.0.4.6上使用GTK#,在Windows上,我得到一个Gtk.EventBox连接到ButtonPressEventHandler检测单击(EventType.ButtonPress),但是双击({{ 1}})永远不会被触发,有没有人知道为什么? 我甚至尝试在我的处理程序方法中添加EventType.TwoButtonPress属性,但它没有改变任何东西。 我尝试了一个"[GLib.ConnectBefore]",一个按钮&一个EventBox,所有那些检测单击,但没有双重...


我的代码示例:

TreeView

2 个答案:

答案 0 :(得分:4)

您的代码示例稍作修改,在我的计算机上运行良好。 我创建了一个EventBox名称'eventbox1'并捕获了'ButtonPressEvent'信号。 唯一的区别是我检查收到的事件是否双击的方式。我还确保发送了双击事件(参见第一行),但在我的情况下,它并不是真的需要,无论如何它仍然有效。

以下是在我的机器上运行的代码并捕获双击:

// The following line is may not be needed but is here to show how to do it
eventbox1.GdkWindow.Events = eventbox1.GdkWindow.Events | Gdk.EventMask.ButtonPressMask;

protected void OnEventbox1ButtonPressEvent (object o, ButtonPressEventArgs args)
{
    if( ((Gdk.EventButton)args.Event).Type == Gdk.EventType.TwoButtonPress)
        System.Media.SystemSounds.Beep.Play (); // Play a sound if this is double-click
}

想想看,如果你的系统上仍然没有收到双击事件,你的系统是否可以忽略双击?

答案 1 :(得分:0)

这是Mono附带的GTK +版本中的a known bug。如果您在Windows上使用.NET运行时运行您的应用程序,它将正常工作,因为GTK#for .NET捆绑了不同版本的GTK +。