private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.CurrentCell.ColumnIndex == 0)
            {
                MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());
                //if (dataGridView1.CurrentCell.Value.ToString() == "NO")
                //{
                //    dataGridView1.CurrentCell.Value = "YES";
                //}
                //else
                //{
                //    dataGridView1.CurrentCell.Value = "NO";
                //}            }
        }
datagridveiw上有记录,当点到第一列的时候,出现未将对象引用设置到对象的实例,我感觉第一列应该是有值的,只是值等于""罢了,怎么会报这样子的错呢,请大家指点一下吧,非常感谢.

解决方案 »

  1.   

    MessageBox.Show(dataGridView1.CurrentCell[你的列名].Value.ToString());
      

  2.   


    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
      {
          if(dataGridView1.CurrentCell != null)
          {
               if (dataGridView1.CurrentCell.ColumnIndex == 0)
               {
                   MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());
               }
          }
      }
      

  3.   

    问题是dataGridView1.CurrentCell 是有的啊,怎么会存在 null,奇怪.
      

  4.   

    CurrentCell 属性 :
    表示当前单元格的 DataGridViewCell,如果没有当前单元格,则为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。默认值是第一列中的第一个单元格,如果控件中没有单元格,则为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。说明现在没有当前单元格!
      

  5.   

    代码改成这样子,一样的报错呀,(datagridview 是用datasource 属性)
      

  6.   

    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                if(dataGridView1.CurrentCell != null)
                 {
                   if (dataGridView1.CurrentCell.ColumnIndex == 0)
                   {
                       MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());
                   }
                }        }
    我改成这样子一样不行呀
      

  7.   

    你的DataGridView是否添加到Form上了?
    也就是说你的DataGridView是否手工代码创建后,用代码绑定事件的?然后没有使用
    this.Controls.add(datagridview1);
      

  8.   

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
      {
      if(dataGridView1.CurrentCell != null && dataGridView1.CurrentCell.value.ToString() != "")
      {
        if (dataGridView1.CurrentCell.ColumnIndex == 0)
        {
           MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());
         }
      }  }
      

  9.   

    10楼的也不行
    当dataviewgrid单元格的值 为null的时候, tostring()就会报错,我改成如下
    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                if (dataGridView1.CurrentCell.ColumnIndex == 0)
                {
                    if (dataGridView1.CurrentCell.Value != null)
                    {
                        if (dataGridView1.CurrentCell.Value.ToString() == "YES")
                        {
                            dataGridView1.CurrentCell.Value = "NO";
                        }
                        else
                        {
                            dataGridView1.CurrentCell.Value = "YES";
                        }
                    }
                    else
                    {
                        dataGridView1.CurrentCell.Value = "YES";
                    }
                }
            }
    就OK了,