c# - 如何循环遍历 gtk 中的节点 View 行#

标签 c# mono monodevelop gtk#

我有 2 列的 nodeview,需要遍历 a 列中的值,并且单元格中的值匹配条件,我需要询问用户要做什么,并在 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 ();
    }

但无法从单元格中获取任何值...

有人可以帮忙吗?

最佳答案

这是因为您在 View 上迭代,而要获取值您应该在模型 上迭代。要迭代模型,您可以使用如下代码:

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 来获取与 Gtk.TreeIter 的行“指针”和列(索引从0).

关于c# - 如何循环遍历 gtk 中的节点 View 行#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27446572/

相关文章:

android - MonoDroid : Unable to Debug to an Android 4. 0.3 设备

c# - FTPWebRequest - 如何在没有 ftp 的情况下连接 ://in host address?

c# - 为什么 System.IO 类在我的代码中不可用

c# - 在 MSBuild 配置文件中指定记录器

c# - 将函数或存储过程结果转换为 LINQ 的 "live"结果

c# - 在 Linux 上使用 C# 和 Mono 构建控制台应用程序来解密 cookie,如何确保可以访问 .dll

c# - Mono 和 Array.Sort

mono - 我如何在 Linux 上的 Mono 上使用 RabbitMQ

c# - 访问被拒绝 Process.Start

mono - monodevelop 2.1+ 是否支持visual studio 2010 项目文件?