如何捕获Gtk.TreeView中的点击?

时间:2009-05-11 17:41:18

标签: c# gtk gtk# gtktreeview

我正在尝试在TreeView的空白区域中捕获双击事件以创建新节点。不幸的是,标准方法不起作用。我已经尝试将ButtonPressEvent附加到TreeView和托管T.V.的ScrolledWindow。我的功能没有任何回调。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:8)

您需要在处理程序上使用GLib.ConnectBeforeAttribute来处理TreeView.ButtonPressEvent,否则窗口小部件将在内部处理事件,并且不会调用您的处理程序。

示例:

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

答案 1 :(得分:2)

http://old.nabble.com/CellRenderer-editable-on-double-click-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"

答案 2 :(得分:-4)

我认为Treeview有一个自己的窗口。

获取窗口句柄,然后获取SendMessage(treeview-> Getsafehwnd(),tvi_root,tvichildren)

上述发送消息仅供您理解。