質問

私は、新しいノードを作成するために、ツリービューの空の領域でダブルクリックしてイベントをキャッチしようとしています。残念ながら、標準的な方法は動作しません。私は、ツリービューとT.V.がホストされているスクロールウィンドウの両方にButtonPressEventを装着しようとしました。私は私の関数に任意のコールバックを得ることはありません。

どのように私はこの問題を解決することができますか?

役に立ちましたか?

解決

あなたがそうでなければ、ウィジェットが内部的にイベントを処理すると、あなたのハンドラが呼び出されることはありません、TreeView.ButtonPressEventを処理するために、あなたのハンドラにGLib.ConnectBeforeAttributeを使用する必要があります。

例:

[GLib.ConnectBefore]
void OnTreeViewButtonPressEvent(object sender, ButtonPressEventArgs e)
{
    if (e.Type == Gdk.EventType.TwoButtonPress)
    {
        // double click
    }
}    

他のヒント

http://old.nabble.com/CellRenderer-編集可能なオンダブルクリック-td24975510.htmlする

self.treeview.connect("button-press-event",self.cell_clicked)

def cell_clicked(self, widget, event):
     if event.button == 1 and event.type == gtk.gdk.BUTTON_PRESS:
        print "Double clicked on cell"

私は、ツリービューは、独自のウィンドウを持っていると思います。

ウィンドウハンドルを取得し、その後のSendMessage(treeview-> Getsafehwnd()、tvi_root、tvichildren)

上記の送信メッセージには、ご理解のみを目的としてます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top