2013-02-28 79 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對象 - 因爲它會一直更新。