datagridview单元格单击事件

时间:2012-10-06 17:22:36

标签: c# datagridview cell

我在数据网格视图中有一个单元格单击事件,以在消息框中的单击单元格中显示数据。我将它设置为仅适用于某个列的位置,并且只有在单元格中有数据时

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());
}

但是,每当我点击任何列标题时,都会显示一个空白消息框。我不知道为什么,任何提示?

5 个答案:

答案 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());