为什么不';t我的组合框显示文本

本文关键字:组合 显示 文本 我的 为什么不 | 更新日期: 2023-09-27 18:25:11

我在一个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()

为什么不';t我的组合框显示文本

您正在寻找的是自定义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;

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

工作完成!:)

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

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