GTK/GTK#TreeView
で、マウス ポインターが現在ホバリングしているアイテム/ノードを取得するにはどうすればよいですか?
1755 次
1 に答える
1
チェックボックスを使用せずに、マウスの右ボタンを使用して項目を選択したいとしましょう。次の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 を使用している場合は、ListStore オブジェクトの代わりに TreeModelSort オブジェクトを使用して正しい項目を取得する必要があります。
if (!sorted.GetIter(out iter, path))
return;
Item item = (Item) sorted.GetValue (iter, 0);
于 2012-03-05T00:33:25.540 に答える