gpt4 book ai didi

c# - DataGridView 中的 InvalidCastException

转载 作者:行者123 更新时间:2023-11-30 16:34:19 27 4
gpt4 key购买 nike

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

我有一个类 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 的绑定(bind)源。我可以在 MyStruct 中的各个字段上使用 InitFromString 轻松加载数据网格。

当我尝试编辑 DataGridView 的单元格中的值时出现问题。转到第一行第一列,我更改现有数字的值。它给出了一个异常(exception) blizzard,第一行说:

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;
}

关于c# - DataGridView 中的 InvalidCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2511263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com