为什么我的组合框没有显示文字?

时间:2012-02-21 04:46:47

标签: c# gtk#

我正在使用GTK-sharp应用程序。我有这段代码但combobox1没有显示任何项目。为什么不呢?

ListStore store = new ListStore(typeof(myclass));

store.AppendValue(new myclass("hola",7));
store.AppendValue(new myclass("hola2",8));
store.AppendValue(new myclass("hola3",2));

combobox1.Model = store;

班级myclass会覆盖ToString()

2 个答案:

答案 0 :(得分:2)

您要找的是自定义Gtk.CellRenderer

private void MyClassRenderer(CellLayout cell_layout, CellRenderer cell, TreeModel model, TreeIter iter)
{    
    MyClass myclass = model.GetValue(iter, 0) as MyClass;
    (cell as CellRendererText).Text = myclass.ToString();
}

在设置方法中添加一些额外的代码,如下所示:

CellRendererText myClassCell = new CellRendererText();
combobox1.PackStart(myClassCell, true);
combobox1.SetCellDataFunc(myClassCell, MyClassRenderer);

ListStore store = new ListStore(typeof(MyClass));

store.AppendValues(new MyClass("hola",7));
store.AppendValues(new MyClass("hola2",8));
store.AppendValues(new MyClass("hola3",2));

combobox1.Model = store;

确保在SetCellDataFunc方法之后调用PackStart方法。

完成工作! :)

答案 1 :(得分:0)

我不太确定,但请确保列表框键和值映射到类中的字段。我认为它需要具体。设置值后,请确保执行最终的数据绑定,如:control.DataBind();

通常,C#绑定如下:1)自动生成列/手动将所有字段映射到键和值2)。设置字段3.并调用bind()函数。