我正在开发一个基于Gtk#的应用程序,它使用从Gtk.Bin派生的自定义小部件。由于我不知道的某些原因,它不会收到鼠标移动事件。以下代码永远不会被调用:
[GLib.ConnectBefore]
protected override bool OnMotionNotifyEvent (Gdk.EventMotion evnt)
{
Console.Out.WriteLine( "Mouse move!" );
return base.OnMotionNotifyEvent (evnt);
}
我还扩展了小部件的Event掩码以接收所有事件(在构造函数中):
AddEvents(( int ) Gdk.EventMask.AllEventsMask );
有什么想法吗?
答案 0 :(得分:0)
Gtk.Bin是一个无窗口容器,因此默认情况下它不会接收鼠标事件。
您可以在子类中手动创建Gdk.Window以接收鼠标事件,或者更简单的路径是子类Gtk.EventBox,它是为此目的而设计的Gtk.Bin子类,通过内部创建自己的Gdk窗口