输入值时ObjectListView列中的C#组合框

输入值时ObjectListView列中的C#组合框,c#,combobox,objectlistview,treelistview,C#,Combobox,Objectlistview,Treelistview,我有来自ObjectListView库的带有TreeListView的main表单 我想在ValueColumn(第二列)中使用不同的Windows.Forms.Controls组件输入值 TreeView(名称为jsonTreeView)正常显示所有值及其类型。这是基于我自己的课程: public class DataTreeNode { public string Name { get; set; } public DataTreeNodeType Type { get; s

我有来自
ObjectListView
库的带有
TreeListView
的main表单

我想在
ValueColumn
(第二列)中使用不同的
Windows.Forms.Controls
组件输入值

TreeView
(名称为jsonTreeView)正常显示所有值及其类型。这是基于我自己的课程:

public class DataTreeNode
{
    public string Name { get; set; }
    public DataTreeNodeType Type { get; set; }
    public string Value { get; set; }
    public List<DataTreeNode> Children { get; set; }
}
文件说:

创建单元编辑器后,将通过controls value属性(如果有且可写)为其提供单元值。如果它没有可写值属性,则其文本属性将设置为单元格值的文本表示形式

当用户编辑完单元格中的值后,新值将写回模型对象(如果可能)。要获取修改后的值,默认处理将尝试再次使用value属性。如果不起作用,将使用Text属性

但是,当我尝试使用comboBox设置任何值时(此控件具有
文本
属性),返回值为
null
。 我不仅尝试在combobox中添加字符串,还尝试在custom和standart类中添加字符串——什么都没有发生。

我怎样才能做到这一点呢?

我找到了一些解决办法(不是很好,但解决了问题)

ObjectListView
库的源代码中,我找到了
BooleanCellEditor
类。它继承自
组合框
,并将值表示为
布尔值
。我将该代码复制到解决方案中,并将值从
bool
更改为
string

OLV源代码:

internal class BooleanCellEditor : ComboBox
{
    public BooleanCellEditor() {
        this.DropDownStyle = ComboBoxStyle.DropDownList;
        this.ValueMember = "Key";

        ArrayList values = new ArrayList();
        values.Add(new ComboBoxItem(false, "False"));
        values.Add(new ComboBoxItem(true, "True"));

        this.DataSource = values;
    }
}
我的源代码:

public class StringBooleanCellEditor : ComboBox
{
    public StringBooleanCellEditor()
    {
        DropDownStyle = ComboBoxStyle.DropDownList;
        ValueMember = "Key";

        var values = new ArrayList
            {
                new ComboBoxItem("False", "Ложь"),
                new ComboBoxItem("True", "Истина")
            };

        DataSource = values;
    }
}
我重命名了类,使其名称更适合代码

public class StringBooleanCellEditor : ComboBox
{
    public StringBooleanCellEditor()
    {
        DropDownStyle = ComboBoxStyle.DropDownList;
        ValueMember = "Key";

        var values = new ArrayList
            {
                new ComboBoxItem("False", "Ложь"),
                new ComboBoxItem("True", "Истина")
            };

        DataSource = values;
    }
}