其实我没有写触发事件.我实现的功能是,选择DataGridViewComboBoxColumn的某一项后,下一个单元格自动赋值.例如,我的 DataGridViewComboBoxColumn中有两个Item,一个是"长整型",一个是"短整型",当选择"长整型"时,下一个单元格自动显示长度"32";选择"短整型"时,下一单元格自动显示长度"16".
我用的是这样一个触发事件:
//更改单元格内容时发生
private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.CurrentRow.Cells[1].Value.ToString() == "长整型")
{
dataGridView1.CurrentRow.Cells[2].Value = "32";
}
else if (dataGridView1.CurrentRow.Cells[1].Value.ToString() == "短整型")
{
dataGridView1.CurrentRow.Cells[2].Value = "16";
}
}
但是这样有一个异常需要处理:"未将对象引用设置到对象的实例".出现这个异常有多种原因,我这里的原因是DataGridView的数据为空,但是考虑到DataGridView在项目中的作用是要用户输入,所以只有将其中的ComboBox初始化设置一个选项.
我的做法如下:
在create构造函数中添加代码:
this.dataGridView1.Rows[0].Cells[1].Value = "文本型";
另外还要添加个触发事件,否则新增行后又会出现同样问题:
//新增行时的触发事件
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
this.dataGridView1.CurrentRow.Cells[1].Value = "文本型";
}
我的问题就这样解决了~