如何在TreeView中获取鼠标指针下的项目(树节点)?

在GTK / GTK# TreeView ,如何获取鼠标指针当前hover的项目/节点?

假设我们想要使用鼠标右键选择项目而不使用复选框。 以下ButtonPress事件处理程序就是这样 – 它切换我们用RMB点击的项目的选定属性。 然后我们使用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); 
Interesting Posts