我注意到DataGridViewTextBoxColumn没有强制转换为十进制。我通过以下两种方式来证明这一点。
-
数据表
-
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 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异常无法处理,对象引用未在对象上设置实例
代码如下:
专用void DataGridView1_Cellendedit(对象发送方、DataGridViewCellEventArgs e)
{
int b=DataGridView1.CurrentCell.RowIndex;
如果(
DataGridView1[0,B].值!=dbnull.值&&
DataGridView1[1,b].值!=dbnull.value
)
{
dataGridView1[2,b].value=convert.todecimal(dataGridView1[0,b].value.toString())
*convert.todecimal(dataGridView1[1,b].value.toString());
}
}
我只是想知道它背后的原因。解决了DataGridViewTextBoxColumn的强制转换问题