4

我有一个DataGridView,我想选择第一列的单元格。

这是我的datagridview.Click方法:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    name = dataGridView1.CurrentRow.Cells[0].Value.ToString();
}

目前我的名字变量是null.

我究竟做错了什么?

在此处输入图像描述

4

3 回答 3

3

CurrentRow 可能尚未设置,因此请使用 RowIndex 属性作为事件参数。试试这种方式:

void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {
  if (e.RowIndex > -1 && dataGridView1.Rows[e.RowIndex].Cells[0].Value != null) {
    name = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
  }
}

以防万一,请确保事件已连接:

public Form1() {
  InitializeComponent();
  dataGridView1.CellClick += dataGridView1_CellClick;
}
于 2013-02-28T19:15:15.237 回答
0

你可以这样做:

    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
      var view = (sender as DataGridView); //<-- notes this
      var currentCellString = view.CurrentCell.Value.ToString();
    }

有时您需要sender在使用时抓取对象 - 因为它总是会更新。

于 2013-02-28T19:34:52.280 回答
-1
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    object name = dataGridView1.Rows[e.RowIndex].Cells[0].Value;
    MessageBox.Show(name.ToString() == string.Empty ? "myvalue" : name.ToString());
}
于 2013-02-28T19:22:44.957 回答