输入值时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;
}
}