指定的强制转换无效 - DataGridView

时间:2014-01-09 08:58:31

标签: c# .net datagridview

我正在构建一个应用程序,我正在使用一个.dll,它需要一个“Level”参数设置为金牌,银牌或铜牌。 Level是.dll中的公共枚举级别。

要选择金牌,银牌或铜牌,我想从dataGridView读取它,以便每次我想要更改它时都不会编辑源码但是我一直得到unhandles异常指定的强制转换是无效的。< / p>

这是我的代码。

var testLevel = dataGridView1.Rows[0].Cells[2].Value == null ? Level.All : (Level)(dataGridView1.Rows[0].Cells[2]).Value; // exception occurs on this line
var searchParameters = new PlayerSearchParameters
{
    Level = testLevel,
};

那么,我怎样才能正确地从DVG中读取水平而没有问题呢?

感谢。

编辑:我用comboBox测试了它并且效果很好,但我真的很喜欢它通过DGV工作。

1 个答案:

答案 0 :(得分:3)

您需要使用Enum.Parse将字符串解析为您需要的枚举。

Level levelValue = (Level) Enum.Parse(typeof(Level), (dataGridView1.Rows[0].Cells[2]).Value);  

还使用检查String.IsNullOrEmpty而不是dataGridView1.Rows [0] .Cells [2] .Value == null

作为示例,您可以使用:

Level levelValue;        
var value = dataGridView1.Rows[0].Cells[2]).Value;
if (Enum.IsDefined(typeof(Level), value))  
   levelValue = (Level) Enum.Parse(typeof(Level), value)
else
   levelValue = Level.All