【问题标题】:GTK# TreeView Removing Selected RowGTK# TreeView 删除选定的行
【发布时间】:2015-01-30 04:45:04
【问题描述】:

我试图让下面的代码块工作,该代码块假设从具有 TreeModelFilter 的 TreeView 中删除一行,代码编译并运行良好,但是 TreeView 不反映该行删除。

// Remove an item
TreeIter iter;
TreeView.Selection.GetSelected (out iter);
TreeIter child_iter = Filter.ConvertChildIterToIter (iter);
ListStore.Remove(ref child_iter);

编辑:

查看此代码块上出现的错误消息,它们是:

Gtk-CRITICAL **: gtk_list_store_get_path: assertion 'iter->stamp == GTK_LIST_STORE (tree_model)->stamp' failed
Gtk-CRITICAL **: gtk_tree_model_filter_convert_child_iter_to_iter: assertion     'child_path != NULL' failed
Gtk-CRITICAL **: gtk_list_store_remove: assertion 'VALID_ITER (iter, list_store)' failed

似乎显然这意味着 iter 无效,通常来自不同的模型,但由于我认为只有一个 treeviewmodel,即使我使用了一个过滤器,我猜它会产生两个。

【问题讨论】:

    标签: c# treeview gtk#


    【解决方案1】:

    始终在未排序的模型上执行迭代(基于 TreeModel)。

    过滤/排序模型可以链接起来,并可能减少可见数据集。它们仅用于此目的。此外,相同的模型可以显示在不同的树视图中,具有不同的过滤/排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多