Gtk# TreeView 判断哪个item被选中

Gtk# TreeView determine which item is selected

我是 Gtk 的新手,我正在使用 Gtk#。我正在使用 TreeView 组件,我想知道用户何时选择了一个新条目。

我试过使用TreeView.Selection.SelectFunction。然而,这在做出选择之前被调用,这不是我想要的。我想知道用户刚刚选择了什么,而不是之前选择了什么。我该怎么做才能做到这一点?

谢谢

这是我目前拥有的

catalogTreeView.Selection.SelectFunction = CategorySelected;


bool CategorySelected(Gtk.TreeSelection selection, Gtk.TreeModel model, Gtk.TreePath path, bool abool) {
    TreeIter iter;


    if (selection.GetSelected (out model, out iter)) {
        Console.WriteLine("abool = " + abool);
        Console.WriteLine("Path of selected row = {0}", model.GetPath (iter));
        Console.WriteLine(model.GetValue (iter, 0));
    }

    return true;
}

您需要 ButtonPressEvent 的处理程序,您可以在其中使用 treeview.Selection.GetSelected() 操作来检索选定的模型和 iter,因为您已经这样做了。注意。您需要将 GLib.ConnectBeforeAttribute 属性添加到此事件处理程序,并将该事件添加到树视图的事件列表中。例如

treeview.Events |= EventMask.ButtonPressMask;
treeview.ButtonPressEvent += YourOnButtonPressEvent;

...

[GLib.ConnectBeforeAttribute]
protected void YourOnButtonPressEvent (object o, ButtonPressEventArgs args)
{
    // code here
}