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.Eventを に変換するにはどうすればよいGdk.EventKeyですか? キャストしてみましたが、うまくいかないようです。

編集:おっと!問題は、ステートメントに誤ってセミコロンを追加しifてしまい、空のステートメントになってしまったことです。何らかの理由で、Gdk.Eventは に対応していないため、代わりにXEventを使用するソリューションを現在追求していXEventます。

4

1 に答える 1

1

タイプを印刷してみて、実際にどのようなものかを確認してみてはいかがですか。(ない場合もありますEventKey

お気に入り:

Console.WriteLine (evnt.GetType ());

(または、デバッガーで一時停止し、型を調べるために調べます)

于 2010-03-06T22:51:46.523 に答える