我有一个DataGridView
,我想选择第一列的单元格。
这是我的datagridview.Click
方法:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
name = dataGridView1.CurrentRow.Cells[0].Value.ToString();
}
目前我的名字变量是null
.
我究竟做错了什么?
我有一个DataGridView
,我想选择第一列的单元格。
这是我的datagridview.Click
方法:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
name = dataGridView1.CurrentRow.Cells[0].Value.ToString();
}
目前我的名字变量是null
.
我究竟做错了什么?
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;
}
你可以这样做:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
var view = (sender as DataGridView); //<-- notes this
var currentCellString = view.CurrentCell.Value.ToString();
}
有时您需要sender
在使用时抓取对象 - 因为它总是会更新。
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());
}