4

我试图在 TreeView 的空白区域中捕获双击事件以创建新节点。不幸的是,标准方式不起作用。我尝试将 ButtonPressEvent 附加到 TreeView 和托管 TV 的 ScrolledWindow。我的函数没有任何回调。

我该如何解决这个问题?

4

3 回答 3

8

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

例子:

[GLib.ConnectBefore]
void OnTreeViewButtonPressEvent(object sender, ButtonPressEventArgs e)
{
    if (e.Type == Gdk.EventType.TwoButtonPress)
    {
        // double click
    }
}    
于 2009-05-11T18:17:53.600 回答
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"
于 2011-02-06T22:54:03.950 回答
-4

我认为 Treeview 有自己的窗口。

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

以上发送信息仅供您理解。

于 2009-05-11T17:49:08.937 回答