C# 错误:';输入字符串的格式不正确;
如果我将单元格[2]更改为单元格[0],效果很好C# 错误:';输入字符串的格式不正确;,c#,C#,如果我将单元格[2]更改为单元格[0],效果很好 我还是个C#初学者,但我猜它无法将“挣”列中的数据转换为整数?您应该检查字段是否有数值,然后将其转换为int sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value); 浮点和=0; 对于(int i=0;i
我还是个C#初学者,但我猜它无法将“挣”列中的数据转换为整数?您应该检查字段是否有数值,然后将其转换为int
sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
浮点和=0;
对于(int i=0;i
考虑到您的屏幕截图,单元格[2]
不是一个int
而是一个Decimal
和sum应该声明为这种类型
float sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
float temp = 0;
float.TryParse(dataGridView1.Rows[i].Cells[2].Value?.ToString(), out temp);
sum += temp;
}
label1.Text = sum.ToString();
十进制和=0;
对于(int i=0;i
如果由于某些原因该值为空或错误,可以使用以下方法检查转换是否成功:
十进制和=0;
对于(int i=0;i
注意:
(dataGridView1.Rows[i].Cells[2].Value???)
将对dataGridView1.Rows[i].Cells[2].Value执行检查。如果为null,则将使用值“”
,而不是null
null.ToString()
将引发异常。试试这个
Decimal sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
Decimal temp;
if (Decimal.TryParse((dataGridView1.Rows[i].Cells[2].Value ?? "").ToString(), out temp))
sum += temp;
}
label1.Text = sum.ToString();
Decimal sumcol=0;
对于(int i=0;i值
属于对象
类型,这就是为什么int.TryParse
不编译(int.TryParse
需要string
)它说“TryParse方法不需要重载1argument@OmarMohamed更改了值?.ToString()
-注意?
为安全起见,如果值为null
System.NullReferenceException:“对象引用未设置为对象的实例。”System.Windows.Forms.DataGridViewCell.Value.get返回null。可能decimal
是更好的选择(挣来的
似乎是钱)对不起,但同样(参见阿明·莫兹加尼的回答):Decimal.TryParse
/Decimal.Parse
想要字符串
,而不是对象
(值
属于对象类型)System.NullReferenceException:'对象引用未设置为对象的实例。'System.Windows.Forms.DataGridViewCell.Value.get返回null。但是如果我将值更改为值?它显示一个数字(dataGridView1.Rows[i].Cells[2].Value???).ToString()
抛出一个错误?dataGridView1.Rows[i].Cells[2].Value.ToString()如果dataGridView1.Rows[i].Cells[2]的值为空,则code>将引发异常。您可以使用.Text代替值,也可以使用'gvw_Search.Rows[i].Cells[1].Text.ToString();'
Decimal sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
sum += Decimal.Parse((dataGridView1.Rows[i].Cells[2].Value ?? "").ToString());
}
Decimal sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
Decimal temp;
if (Decimal.TryParse((dataGridView1.Rows[i].Cells[2].Value ?? "").ToString(), out temp))
sum += temp;
}
label1.Text = sum.ToString();
Decimal sumcol = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
Decimal val;
string colval = dataGridView1.Rows[i].Cells[2].Value.ToString();
if(colval != null){
if (Decimal.TryParse(colval, out val))
sum += val;
}
label1.Text = sum.ToString();}