C#DataGridView列自定义ValueType

时间:2018-02-21 16:27:59

标签: c# datagridview value-type

我有一个简单的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设置为任何内容。有没有办法可以做到这一点?

0 个答案:

没有答案