Gtk.Bin派生类不接收MotionNotifyEvent

时间:2012-01-05 14:57:20

标签: gtk gtk#

我正在开发一个基于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 );

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Gtk.Bin是一个无窗口容器,因此默认情况下它不会接收鼠标事件。

您可以在子类中手动创建Gdk.Window以接收鼠标事件,或者更简单的路径是子类Gtk.EventBox,它是为此目的而设计的Gtk.Bin子类,通过内部创建自己的Gdk窗口