如何在gtk中循环遍历节点视图行#

时间:2014-12-12 15:13:14

标签: c# mono monodevelop gtk#

我有2个nodeview的nodeview,需要在a列中循环使用值,并且cell中的值匹配条件,我需要询问用户要做什么,并在b列中写入用户输入。

我试过

for (int i = 0; i < nodeview1.Model.IterNChildren(); i++)

    {
        //var x = nodeview1.Columns [0].ToString ();
        //var x = nodeview1.Columns [i].ToString ();
        //var x = nodeview1.Columns [0].Data.Values.ToString ();
    }

但无法从细胞获得任何价值......

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

这是因为您正在迭代视图,同时获取应该在模型上迭代的值。要迭代模型,您可以使用以下代码:

Gtk.TreeModel model = nodeview1.Model;
Gtk.TreeIter iter;
if (model.GetIterFirst(out iter)) {
    do {
        Console.WriteLine("COLUMN 1: " +  model.GetValue(iter, 0));
        Console.WriteLine("COLUMN 2: " +  model.GetValue(iter, 1));
    } while (model.IterNext(ref iter));
}

需要if,因为如果模型为空,GetIterFirst会返回false。然后你使用它并循环直到IterNext返回false。

另请注意如何在模型上使用GetValue来获取与行对应的值&#34;指针&#34;由Gtk.TreeIter和列(索引从0开始)。