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