我有一个简单的DataGridView
和一个自定义类型MyType
,如下所示:
class MyType
{
public string Prop1 { get; set; }
public int Prop2 { get; set; }
public MyType(string Prop1 = "Empty", int Prop2 = 0)
{
this.Prop1 = Prop1;
this.Prop2 = Prop2;
}
public override string ToString()
{
return this.Prop1 + "[" + this.Prop2 + "]";
}
}
我想在DataGridView
类型的MyType
中添加一列,例如可以显示Prop1
。我做这样的事情:
this.dataGridView1.AutoGenerateColumns = false;
DataGridViewColumn c1 = new DataGridViewTextBoxColumn { Name = "C1" };
DataGridViewColumn c2 = new DataGridViewTextBoxColumn { Name = "C2" };
DataGridViewColumn c3 = new DataGridViewTextBoxColumn
{
Name = "C3",
ValueType = typeof(MyType),
DataPropertyName = "Prop1"
};
DataGridViewColumn c4 = new DataGridViewTextBoxColumn { Name = "C4" };
this.dataGridView1.Columns.AddRange(c1, c2, c3, c4);
当我使用DataGridView
(当然是列“C3”)时,它无法将我输入的单元格中的字符串值转换为我的自定义类型MyType
(显然我需要提供某种转换能力)。我不确定如何做到这一点,也无法找到一个关于如何做到这一点的正确例子。另外,我试图避免在可能的情况下将DataGridView.DataSource
设置为任何内容。有没有办法可以做到这一点?