在TreeView中使用gtk#CellRendererCombo

时间:2012-12-01 17:45:26

标签: c# grid gtk# gtktreeview cellrenderer

我希望第一列的Gtk.TreeView成为ComboBox,我可以在其中选择我想要第一列的值。这是我下面的代码。

        Gtk.TreeViewColumn compteColumn = new TreeViewColumn();
        Gtk.CellRendererCombo compteCellCombo = new CellRendererCombo();
        compteColumn.PackStart(compteCellCombo, true);
        compteColumn.AddAttribute(compteCellCombo, "text", 0);
        compteColumn.Title = "Compte Name";
        compteCellCombo.Editable = true;

我试图在互联网上搜索Gtk.CellRendererCombo属性,但我发现没什么值得的,我尝试过其中一些:

  • 文本
  • 文本列
  • 模型
  • 编辑

但似乎没有任何效果,因为“text”属性会产生这种信息:

(eAppGtk:2528): Gtk-WARNING **: gtkliststore.c:608: Unable to convert from GtkSharpValue to gchararray


(eAppGtk:2528): Gtk-WARNING **: gtkliststore.c:608: Unable to convert from gchararray to gint

对于出现问题的一个很好的见解将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

我认为应该由Gtk.TreeViewColumn.AddAttribute(cell, attribute, columnIndex)中的字符串设置属性,可以通过C#Properties的方式设置。这种情况下的列索引是Property TextColumn。

其余部分应该在下面的代码中说明一切:

this.compteComboBox = new CompteComboBox(this.window.CompteManager, new ComboBox());

Gtk.TreeViewColumn compteColumn = new TreeViewColumn();
Gtk.CellRendererCombo compteCellCombo = new CellRendererCombo();
compteColumn.PackStart(compteCellCombo, true);
compteColumn.Title = "Compte Name";
compteCellCombo.TextColumn = 0;
compteCellCombo.Editable = true;
compteCellCombo.Edited += OnEdited;
compteCellCombo.HasEntry = true;
compteCellCombo.Model = this.compteComboBox.ComboBox.Model;
compteCellCombo.Text = this.compteComboBox.ComboBox.ActiveText;