我正在尝试使用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.Event
为Gdk.EventKey
?我试过铸造它,但这似乎不起作用。
编辑:哎呀!问题是我不小心在语句中添加了分号if
,使其成为空语句。由于某种原因,Gdk.Event
不对应于XEvent
,所以我现在正在寻求一个使用 的解决方案XEvent
。