我在数据网格视图中有一个单元格单击事件,以在消息框中的单击单元格中显示数据。我将它设置为仅适用于某个列的位置,并且只有在单元格中有数据时
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex.Equals(3))
if (dataGridView1.CurrentCell != null && dataGridView1.CurrentCell.Value != null)
MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());
}
但是,每当我点击任何列标题时,都会显示一个空白消息框。我不知道为什么,任何提示?
答案 0 :(得分:21)
您还需要检查单击的单元格是否不是列标题单元格。像这样:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex.Equals(3) && e.RowIndex != -1){
if (dataGridView1.CurrentCell != null && dataGridView1.CurrentCell.Value != null)
MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());
}
答案 1 :(得分:2)
检查CurrentCell.RowIndex
是否不是标题行索引。
答案 2 :(得分:1)
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1) return; //check if row index is not selected
if (dataGridView1.CurrentCell.ColumnIndex.Equals(3))
if (dataGridView1.CurrentCell != null && dataGridView1.CurrentCell.Value != null)
MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());
}
答案 3 :(得分:1)
接受的解决方案会抛出一个"对象未设置为对象的实例"作为空引用检查的异常必须在检查变量的实际值之前发生。
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.CurrentCell == null ||
dataGridView1.CurrentCell.Value == null ||
e.RowIndex == -1) return;
if (dataGridView1.CurrentCell.ColumnIndex.Equals(3))
MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());
}
答案 4 :(得分:0)
试试这个
if(dataGridView1.Rows.Count > 0)
if (dataGridView1.CurrentCell.ColumnIndex == 3)
MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());