我注意到DatagridviewtextBoxColumn没有强制转换为Decimal。我通过以下两种方式证明了这一点。
DataTable : -
DataTable dt = new DataTable();
dt.Columns.Add("carats");
dt.Columns.Add("rate");
dt.Columns.Add("amount");
dataGridView1.DataSource = dt;
使用以下转换代码
可以正常工作private void dataGridView1_CellEndEdit(object sender,DataGridViewCellEventArgs e)
{
int b = dataGridView1.CurrentCell.RowIndex;
if (
dataGridView1[0, b].Value != DBNull.Value &&
dataGridView1[1, b].Value != DBNull.Value
)
{
dataGridView1[2, b].Value = Convert.ToDecimal(dataGridView1[0, b].Value.ToString())
* Convert.ToDecimal(dataGridView1[1, b].Value.ToString());
}
}
但是我对DatagridviewtextBoxColumn的主要观察结果是它为什么?
2的 DatagridviewtextboxColumn : -
DataGridViewTextBoxColumn cts = new DataGridViewTextBoxColumn();
dataGridView1.Columns.Insert(0, cts);
DataGridViewTextBoxColumn rt = new DataGridViewTextBoxColumn();
dataGridView1.Columns.Insert(1, rt);
DataGridViewTextBoxColumn amt = new DataGridViewTextBoxColumn();
dataGridView1.Columns.Insert(2, amt);
抛出错误就像“NullReference Exception is Unhandle”,“对象引用未在对象上设置实例”与以下代码:
private void dataGridView1_CellEndEdit(object sender,DataGridViewCellEventArgs e)
{
int b = dataGridView1.CurrentCell.RowIndex;
if (
dataGridView1[0, b].Value != DBNull.Value &&
dataGridView1[1, b].Value != DBNull.Value
)
{
dataGridView1[2, b].Value = Convert.ToDecimal(dataGridView1[0, b].Value.ToString())
* Convert.ToDecimal(dataGridView1[1, b].Value.ToString());
}
}
我只是想知道背后的原因。并使用DatagridviewtextBoxColumn
解决转换问题答案 0 :(得分:1)
我只使用'null'来检查datagridView单元格,而不是DBNull。你试过那个吗?
编辑:读了一下之后,我找到了this(VB.NET),说明了
如果网格绑定到DataTable,则“空”单元格将包含DBNull.Value。如果网格绑定到其他东西或根本没有绑定,那么“空”单元格将包含Nothing
所以你应该检查一下。