Events Mono中Gdk事件的转换

Events Mono中Gdk事件的转换,events,mono,gtk#,gdk,Events,Mono,Gtk#,Gdk,我试图在Mono中使用Gdk.Window.AddFilter(Gdk.FilterFunc)截获事件。到目前为止,我已经能够连接filter函数,但是现在我正在尝试使用filter函数中的事件 这是迄今为止我在过滤器函数中所做的: private Gdk.FilterReturn FilterFunction(IntPtr xEvent, Gdk.Event evnt) { if (evnt.Type == Gdk.EventType.KeyPress) { G

我试图在Mono中使用
Gdk.Window.AddFilter(Gdk.FilterFunc)
截获事件。到目前为止,我已经能够连接filter函数,但是现在我正在尝试使用filter函数中的事件

这是迄今为止我在过滤器函数中所做的:

private Gdk.FilterReturn FilterFunction(IntPtr xEvent, Gdk.Event evnt)
{
    if (evnt.Type == Gdk.EventType.KeyPress)
    {
        Gdk.EventKey eventKey = (Gdk.EventKey)evnt; // fails here

        if (eventKey.Key == this.key && eventKey.State == this.modifiers)
        {
            this.OnPressed(EventArgs.Empty);
        }
    }

    return Gdk.FilterReturn.Continue;
}
如何将
Gdk.Event
转换为
Gdk.EventKey
?我试过铸造它,但似乎不起作用


编辑:哎呀!问题是我不小心在
if
语句中添加了分号,使其成为空语句。由于某些原因,
Gdk.Event
XEvent
不对应,因此我现在正在寻求一种使用
XEvent
的解决方案。

为什么不尝试打印出类型,以便可以看到它到底是什么?(它可能不是
EventKey

比如:


(或者在调试器中暂停它并检查它以查看类型)

为什么不尝试打印出该类型,以便查看它的真实内容?(它可能不是
EventKey

比如:

(或在调试器中暂停它并检查它以查看类型)

Console.WriteLine (evnt.GetType ());