如何选择单元格的值?

4

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

这是我的 datagridview.Click 方法:

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

目前我的名称变量是null

我做错了什么?

enter image description here


你已经绑定了CellClick事件,但是你的代码在CellContentClick方法中。是打错字了吗? - LarsTech
@LarsTech 非常感谢,就是这个问题!我把它连接到了错误的单元格点击方法! - user1352057
3个回答

3

当前行可能尚未设置,因此请使用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;
}

谢谢您的回答。name变量仍然为null。我目前有一个错误检查,如果传递的值为null,则不允许将其传递给“delete object”,并且此检查正在触发。 - user1352057
如果 dataGridView1 本身为 null,会怎样? - user586399
@LarsTech 我已添加了一个准确的行截图,我正在点击该行。没有添加新行,我只是试图存储所选行的“cdTitle”值,以便我可以将其发送到我的删除对象中,从数据库中删除它。 - user1352057
@user1352057 我无法重现这个问题。可能是你代码中的其他地方出了问题。 - LarsTech
@LarsTech 我已经在调试器中成功显示了正确的变量。现在我又遇到了一个空值!我肯定犯了某个错误。 - user1352057
显示剩余8条评论

0
你可以这样做:
    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
      var view = (sender as DataGridView); //<-- notes this
      var currentCellString = view.CurrentCell.Value.ToString();
    }

有时候你需要获取 sender 对象并使用它,因为它总是会被更新。

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

1
这不会获取所选单元格的值。(除非所选单元格恰好是左上角的单元格) - Jens Kloster
此外,该语句末尾没有“;”。 - user586399

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接