我正在使用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()
答案 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()函数。