2009-01-01 52 views
2

有了一個列表框,我有以下代碼以提取選擇的項目:如何在選擇一個DataGridView獲取特定的細胞改變

private void inventoryList_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     String s = inventoryList.SelectedItem.ToString(); 
     s = s.Substring(0, s.IndexOf(':')); 
     bookDetailTable.Rows.Clear(); 
     ... 
     more code 
     ... 
    } 

我想要做類似的事情了一個DataGridView,那就是,當選擇更改時,檢索所選行中第一個單元格的內容。問題是,我不知道如何訪問該數據元素。

任何幫助,非常感謝。

回答

13

我認爲這就是你要找的。但如果不是,希望它會給你一個開始。

private void dataGridView1_SelectionChanged(object sender, EventArgs e) 
{ 
    DataGridView dgv = (DataGridView)sender; 

    //User selected WHOLE ROW (by clicking in the margin) 
    if (dgv.SelectedRows.Count> 0) 
     MessageBox.Show(dgv.SelectedRows[0].Cells[0].Value.ToString()); 

    //User selected a cell (show the first cell in the row) 
    if (dgv.SelectedCells.Count > 0) 
     MessageBox.Show(dgv.Rows[dgv.SelectedCells[0].RowIndex].Cells[0].Value.ToString()); 

    //User selected a cell, show that cell 
    if (dgv.SelectedCells.Count > 0) 
     MessageBox.Show(dgv.SelectedCells[0].Value.ToString()); 
} 
+0

我認爲是對的,但是如何將我的DataGridTable.SelectionChanged鏈接到我的SelectionChanged的個人方法(如上面所寫的那樣)? – Elie 2009-01-01 07:09:24

0

這是使用列名接近此問題的另一種方法。

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
    var senderGrid = (DataGridView)sender; 
    if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0) 
    { 
     if (e.ColumnIndex == dataGridView1.Columns["ColumnName"].Index) 
     { 
     var row = senderGrid.CurrentRow.Cells; 
     string ID = Convert.ToString(row["columnId"].Value); //This is to fetch the id or any other info 
     MessageBox.Show("ColumnName selected"); 
     } 
    } 
} 

如果您需要傳遞來自所選行的數據,您可以將它傳遞給其他表單。

Form2 form2 = new Form2(ID); 
form2.Show(); 
相關問題