我有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 ();
}
但无法从细胞获得任何价值......
有人可以帮忙吗?
答案 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开始)。