此编码最近从C#.Net 2008升级到C#.Net 2012.此DataGridView中此单元格的值= 4,但每次我的程序到达此行时都会抛出异常。我在这里缺少什么?
if (((int)dgQueue.SelectedRows[0].Cells["StatusKey"].Value != 1 && isRequestCheck))
我收到一封InvalidCastException,详细解释为Specified cast无效......
答案 0 :(得分:0)
如上所述,dgQueue.SelectedRows[0].Cells["StatusKey"].Value
应该适用于指定的强制转换。尝试使用以下格式,如果值的数据类型等于预期,它应该可以工作。
如果期望值为4,则该行应为
int i =(int)dgQueue.SelectedRows[0].Cells["StatusKey"].Value.ToString().Trim();
int i =Convert.ToInt32(dgQueue.SelectedRows[0].Cells["StatusKey"].Value.ToString().Trim());
答案 1 :(得分:0)
一秒钟。在给出答案之前(并感谢您的答案),我能够完成这项工作
if ((Convert.ToInt32(dgQueue.SelectedRows[0].Cells["StatusKey"].Value) != 1 && isRequestCheck))
2012年已弃用(int)转换吗?或者,除了整数之外还有一个值是" StatusKey"细胞集合(可能是空值)?我试图理解为什么这种编码在2008年和现在在2012年工作得很好,但事实并非如此。有任何想法吗 ???我问,因为这种编码技术已经遍及这个应用程序,我正在考虑将我的所有细节改为上面的策略...