モノラルGTK#のTreeViewから複数の行を削除すると、最近少しつまずきました。答えはグーグルですばやく検索できなかったので、この質問をここに投稿します。TreeView(TreeModelSort)で並べ替えを使用する場合、複数の行を削除することは非常に問題がありました。
2030 次
1 に答える
4
次の関数は、派手なTreeModelSortまたはTreeModelFilterを実装していないプレーンTreeViewで選択された複数の行を削除できます。
private void RemoveSelectedRows(TreeView treeView, ListStore listStore)
{
TreeIter iter;
TreePath[] treePath = treeView.Selection.GetSelectedRows();
for (int i = treePath.Length; i > 0; i--)
{
listStore.GetIter(out iter, treePath[(i - 1)]);
string value = (string)listStore.GetValue(iter, 0);
Console.WriteLine("Removing: " + value);
listStore.Remove(ref iter);
}
}
この次の関数は、TreeModelSortを実装するTreeViewで選択された複数の行を削除できます(TreeViewがTreeModelFilterを使用している場合は、同様のロジックを適用できます)。
private void RemoveSelectedRows(TreeView treeView, ListStore listStore, TreeModelSort treeModelSort)
{
TreeModel model;
TreeIter iter;
TreePath[] treePath = treeView.Selection.GetSelectedRows(out model);
for (int i = treePath.Length; i > 0; i--)
{
model.GetIter(out iter, treePath[(i - 1)]);
string value = (string)model.GetValue(iter, 0);
Console.WriteLine("Removing: " + value);
TreeIter childIter = treeModelSort.ConvertIterToChildIter(iter);
listStore.Remove(ref childIter);
}
}
誰かがこれを行うためのより良い方法を持っているか、私のソリューションにバグを見つけた場合は、修正を投稿してください、ありがとう!
于 2013-01-16T06:25:11.293 に答える