C# 获取DataGridView中特定列中的值
我的Winforms应用程序中有一个datagridview。 用户可以单击datagridview上的任意位置 然后单击按钮对该数据行执行操作 但是,为了做到这一点,我需要从该行恢复ID 现在请记住,用户可能没有单击ID列 因此,SelectedCell.Value在这里对我没有用处 我尝试了以下代码C# 获取DataGridView中特定列中的值,c#,winforms,datagridview,C#,Winforms,Datagridview,我的Winforms应用程序中有一个datagridview。 用户可以单击datagridview上的任意位置 然后单击按钮对该数据行执行操作 但是,为了做到这一点,我需要从该行恢复ID 现在请记住,用户可能没有单击ID列 因此,SelectedCell.Value在这里对我没有用处 我尝试了以下代码 DataGridViewRow row = dataIPs.SelectedRows[0]; DataGridViewCell cell = row.Cells[0]; string value
DataGridViewRow row = dataIPs.SelectedRows[0];
DataGridViewCell cell = row.Cells[0];
string value = cell.Value.ToString();
但这会产生一个越界错误
如何从datagridview的特定列获取值,而不管用户实际选择的是哪一列
答复
最终对我有效的代码如下:
DataGridViewRow row = dataIPs.CurrentCell.OwningRow;
string value = row.Cells["IPID"].Value.ToString();
尝试从事件参数中获取值。当未选择行时,您似乎正在尝试访问
SelectedRows
集合
DataGridView
的默认选择模式是CellSelect
,在此模式下,当您单击单元格时,不会选择任何行
您需要更改选择模式或以其他方式获取所需的行
- 您可以将选择模式更改为
,这可以在设计器中或代码中完成:FullRowSelect
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
- 或者,您可以从以下位置访问选定的单元格和行:
或者像这样:DataGridViewRow row = dataGridView1.Rows[dataGridView1.SelectedCells[0].RowIndex];
DataGridViewRow row = dataGridView1.CurrentCell.OwningRow;
SelectedRows[0]
还是Cells[0]
调用?这是一个按钮单击-这就是我遇到的问题-因此事件参数没有行索引、列索引等。事件参数的“值”将是突出显示的单元格中的值,而不一定是我想要的列中的值。例如,如果我的网格有4列,则无论实际选择了4列中的哪一列,我都希望所选行的第一列中的值。问题是在单元格上单击鼠标右键和双击会产生不同的事件。因此,我确实需要用户能够选择单个单元格。因此,我不能使用fullrow select。然后,我需要一种方法来恢复所选单元格的行索引,而不需要可用的mouseeventargs。@PJW请参见第二个选项-基于所选单元格选择行。除非您将鼠标单击位置存储在某个位置,否则您必须选择某个对象,因为当他们单击按钮时,鼠标显然不再位于网格上。@PJW并且sickunit始终建议引入按钮类型的列。