2013-02-28 77 views
3

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

继承人是我datagridview.Click方法:

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

目前我的名字变量是null

我在做什么错?

enter image description here

+0

您连接了CellClick事件,但代码位于CellContentClick方法中。错字? – LarsTech 2013-02-28 20:04:40

+0

@LarsTech非常感谢,就是这样!我把它连接到错误的单元格单击方法! – user1352057 2013-02-28 20:09:13

回答

2

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; 
} 
+0

感谢您的回答。名称变量仍然为空。我目前有一个错误检查,它不允许传递的值传递给一个'删除对象',如果它为空,并且正在触发。 – user1352057 2013-02-28 19:18:50

+0

@ user1352057如果'dataGridView1'本身为'null'怎么办? – 2013-02-28 19:21:07

+0

@ user1352057注意到我使用了RowIndex而不是CurrentRow。名称不能为空,尽管它是一个字符串 - 单元格的值是null。第一列有哪些信息? – LarsTech 2013-02-28 19:22:53

-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

这没有得到选定的单元格值。 (除非偶然选中的单元格是左上角的单元格) – 2013-02-28 19:24:24

+0

此外,没有';'在声明结束 – 2013-02-28 19:34:34

0

你可以这样做:

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

有时你需要抓住使用时的sender对象 - 因为它会一直更新。