C# 如何更新ArrayList以匹配用户订购的树视图

C# 如何更新ArrayList以匹配用户订购的树视图,c#,arraylist,treeview,gtk,C#,Arraylist,Treeview,Gtk,我有一个Gtk树视图在ArrayList中显示项目列表。TreeView设置为可重新排序,因此用户可以拖放列表中的项目以重新排序 我的问题是,在重新排序后,如何更新原始的ArrayList以匹配新的TreeView排序?我已经找到了一个解决方案-下面的代码只是打印出列表中的所有项目;希望您可以看到,通过这样做,您可以找到项目的正确索引,从而在关联的ArrayList中对它们重新排序 TreeIter iter; yourNodeView.Model.GetIter

我有一个
Gtk树视图
ArrayList
中显示项目列表。
TreeView
设置为可重新排序,因此用户可以拖放列表中的项目以重新排序


我的问题是,在重新排序后,如何更新原始的
ArrayList
以匹配新的
TreeView
排序?

我已经找到了一个解决方案-下面的代码只是打印出列表中的所有项目;希望您可以看到,通过这样做,您可以找到项目的正确索引,从而在关联的ArrayList中对它们重新排序

        TreeIter iter;
        yourNodeView.Model.GetIterFirst (out iter);
        for (int i = 0; i < yourNodeView.Model.IterNChildren(); i++)
        {
            string result = ((TypeOfListItem)sequencerNodeView.Model.GetValue (iter, 0)).ToString();
            //Here you would add the TypeOfListItem instance to a new ArrayList, and then after the loop swap out the old ArrayList for the new one. 
            Console.WriteLine("print the item "+result);
            yourNodeView.Model.IterNext(ref iter);
        }

你能展示你的代码吗?是否有特定的原因不使用通用的
列表
而不是旧的和冗余的
ArrayList
?没有特定的原因使用ArrayList覆盖列表,但这肯定不重要?我试图确定如何将重新排序的值从树视图返回到ArrayList(或者列表,如果您愿意的话)。这可能不会引起您的问题,但它只是一个注释,而不是答案。但是没有更多的信息,没有人能回答你的问题。你尝试了什么,你在哪里卡住了?我看不到任何信号,你可以连接到这个;GtkTreeModel中有一个
行重新排序
信号,但它被记录为不使用拖放。在这种情况下,您可能需要考虑实现自定义GTKTeReMod,而不是尝试手动同步ARARYLIST和GTKListSt存储;行的拖放由GtkTreeDragSource和GTKTreeDragTest接口处理。我能够告诉用户何时使用DragEnd完成拖放。这没问题。问题在于通过GtkTreeModel进行迭代,以按照可以看到的顺序恢复项目
string result = ((MyListItem)sequencerNodeView.Model.GetValue (iter, 0)).title;