的DataGridView InvalidCastException

(使用VS 2010 Beta 2-.Net 4.0 B2 Rel)

我有一个类MyTable,它是从BindingList派生的,其中S是一个结构. S由其他几种结构组成,例如:

public class MyTable<S>:BindingList<S> where S: struct
{
    ...
}

public struct MyStruct
{
    public MyReal r1;
    public MyReal r2;

    public MyReal R1 {get{...} set{...}}
    public MyReal R2 {get{...} set{...}}

    ...
}

public struct MyReal
{
    private Double d;

    private void InitFromString(string) {this.d = ...;}

    public MyReal(Double d) { this.d = d;}
    public MyReal(string val) { this.d = default(Double);  InitFromString(val);}

    public override string ToString() { return this.real.ToString();}
    public static explicit operator MyReal(string s) { return new MyReal(s);}
    public static implicit operator String(MyReal r) { return r.ToString();}
    ...
}

好的,我将MyTable用作DataGridView的绑定源.我可以在MyStruct的各个字段上使用InitFromString轻松加载数据网格.

当我尝试在DataGridView的单元格中编辑值时,就会出现问题.转到第一行,第一列,我更改现有数字的值.它产生了异常的暴风雪,其第一行显示:

System.FormatException:从’System.String’到’MyReal’的无效转换

我看过选角讨论和参考书,但看不到任何明显的问题.

有任何想法吗?

解决方法:

我尝试了您的处理CellParsing的方法,并且有效.尽管我做的有些不同,但是可以处理任何类型:

    private void dataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)
    {
        e.Value = Activator.CreateInstance(e.DesiredType, new object[] { e.Value });
        e.ParsingApplied = true;
    }
上一篇:在dataGridView控件上加载数据时显示自定义字符


下一篇:DataGridView 在指定的单元格上添加居中文本,以及获取指定单元格X,Y,坐标,高度宽度,以及行加上序号