Events Mono中Gdk事件的转换
我试图在Mono中使用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
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 ());