1

我正在尝试使用Gdk.Window.AddFilter(Gdk.FilterFunc)Mono 拦截事件。到目前为止,我已经能够连接过滤器功能,但现在我正在尝试使用过滤器功能中的事件。

到目前为止,这就是我在过滤器功能中所拥有的:

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.EventGdk.EventKey?我试过铸造它,但这似乎不起作用。

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

4

1 回答 1

1

你为什么不试着打印出这个类型,这样你就可以看到它到底是什么了?(可能不是EventKey

像:

Console.WriteLine (evnt.GetType ());

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

于 2010-03-06T22:51:46.523 回答