Gtk# TreeView определить, какой элемент выбран
Я новичок в 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;
}
1 ответ
Решение
Вы хотите обработчик для ButtonPressEvent, в котором вы можете использовать операцию treeview.Selection.GetSelected(), чтобы получить выбранную модель и ее текущую версию. NB. Вам необходимо добавить атрибут GLib.ConnectBeforeAttribute в этот обработчик событий, а также добавить событие в список событий для древовидного списка. Например
treeview.Events |= EventMask.ButtonPressMask;
treeview.ButtonPressEvent += YourOnButtonPressEvent;
...
[GLib.ConnectBeforeAttribute]
protected void YourOnButtonPressEvent (object o, ButtonPressEventArgs args)
{
// code here
}