2009-01-01 85 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(); 
相关问题