在 GTK/GTK#TreeView
中,如何获取鼠标指针当前悬停的项目/节点?
问问题
1755 次
1 回答
1
假设我们想使用鼠标右键选择项目而不使用复选框。下面的ButtonPress事件处理程序就是这样做的——它切换我们用 RMB 单击的项目的 selected 属性。然后我们使用CellDataFunc来突出显示选定的项目。tv是 TreeView,store是底层的 ListStore。
[GLib.ConnectBefore]
void HandleTreeViewButtonPressEvent(object o, ButtonPressEventArgs args)
{
if (args.Event.Button != 3)
return;
TreePath path;
int x = Convert.ToInt32(args.Event.X);
int y = Convert.ToInt32(args.Event.Y);
if (!tv.GetPathAtPos (x, y, out path))
return;
TreeIter iter;
if (!store.GetIter(out iter, path))
return;
Item item = (Item) store.GetValue (iter, 0);
item.Selected = !item.Selected;
tv.QueueDraw();
}
如果我们使用排序的 TreeView,我们必须使用 TreeModelSort 对象而不是 ListStore 对象来获取正确的项目:
if (!sorted.GetIter(out iter, path))
return;
Item item = (Item) sorted.GetValue (iter, 0);
于 2012-03-05T00:33:25.540 回答