2010-03-06 18 views
1

GDK事件我試圖攔截單用Gdk.Window.AddFilter(Gdk.FilterFunc)事件。到目前爲止,我已經能夠連接過濾器函數,但現在我正在嘗試使用過濾器函數中的事件。轉換在單

這是我在過濾功能至今:

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的解決方案。

回答

1

你爲什麼不嘗試印刷出來的類型,所以你可以看到它到底是什麼? (它可能不是EventKey

像:

Console.WriteLine (evnt.GetType()); 

(或暫停它在一個調試器,並檢查它看到的類型)

+0

謝謝!它不是'EventKey'。 – 2010-03-06 23:46:19