2

私はmonodevelop3.0.4.6でGTK#を使用していますが、WindowsではシングルクリックGtk.EventBoxの検出に接続されていますが、ダブルクリック()がトリガーされることはありません。理由は誰かわかりませんか?ハンドラーメソッドに属性を追加しようとしましたが、何も変更されませんでした。、ボタン、イベントボックスを試してみましたが、シングルクリックを検出するものはすべてありますが、ダブルクリックはありません...ButtonPressEventHandler(EventType.ButtonPress)EventType.TwoButtonPress"[GLib.ConnectBefore]"TreeView


私のコードのサンプル:

// Somewhere in the constructor :
eventBox.ButtonPressEvent += new ButtonPressEventHandler(myButtonPressHandler);


// The called method
private void myButtonPressHandler(object obj, Gtk.ButtonPressEventArgs a)
{
    EventButton ev = a.Event;
    // single click
    if (ev.Type == EventType.ButtonPress)
    {
        MyLogger.output("1");
    }
    // double click
    else if (ev.Type == EventType.TwoButtonPress)
    {
        MyLogger.output("2");
    }
}
4

2 に答える 2

4

少し変更を加えたコード例は、私のマシンでうまく機能します。「eventbox1」という名前の EventBox を作成し、シグナル「ButtonPressEvent」をキャプチャしました。唯一の違いは、受信したイベントがダブルクリックかどうかを確認する方法です。また、ダブルクリック イベントが送信されることも確認しました (最初の行を参照) が、私の場合は実際には必要ありませんでした。

私のマシンで動作し、ダブルクリックをキャプチャするコードは次のとおりです。

// The following line is may not be needed but is here to show how to do it
eventbox1.GdkWindow.Events = eventbox1.GdkWindow.Events | Gdk.EventMask.ButtonPressMask;

protected void OnEventbox1ButtonPressEvent (object o, ButtonPressEventArgs args)
{
    if( ((Gdk.EventButton)args.Event).Type == Gdk.EventType.TwoButtonPress)
        System.Media.SystemSounds.Beep.Play (); // Play a sound if this is double-click
}

考えてみると、それでもシステムでダブルクリック イベントを受信しない場合、システムがダブル クリックを無視するように設定されている可能性があります。

于 2012-09-16T22:18:12.907 に答える
0

これは、 Mono に含まれる GTK+ のバージョンの既知のバグです。Windows で .NET ランタイムを使用してアプリを実行する場合、GTK# for .NET には異なるバージョンの GTK+ がバンドルされているため、問題なく動作します。

于 2012-09-30T19:23:23.010 に答える