4

我的 Winforms 应用程序中有一个 datagridview。用户可以单击 datagridview 上的任意位置,然后单击一个按钮以对该数据行执行操作但是,为了做到这一点,我需要从该行恢复 ID 现在请记住,用户可能没有单击 ID 列所以 SelectedCell .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();
4

4 回答 4

3

SelectedRows当未选择任何行时,您似乎正在尝试访问该集合。

的默认选择模式DataGridViewCellSelect,在此模式下,当您单击单元格时,不会选择任何行。

您需要更改选择模式或以其他方式获取所需的行。

  • 您可以更改FullRowSelect可以在设计器或代码中完成的选择模式:

    dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    
  • 或者您可以访问选定的单元格和其中的行:

    DataGridViewRow row = dataGridView1.Rows[dataGridView1.SelectedCells[0].RowIndex];
    

    或者像这样:

    DataGridViewRow row = dataGridView1.CurrentCell.OwningRow;
    
于 2012-05-31T13:52:03.727 回答
0

尝试从事件参数中获取值。

于 2012-05-31T13:43:56.067 回答
0

将 SelectionMode 属性设置为 FullRowSelect。这是 SelectedRow 工作所必需的

于 2012-05-31T13:52:19.133 回答
0

您还可以尝试在 datagridview 中添加带有按钮的列。之后,您可以从 datagridview 中捕获事件“CellContentClick”,该事件在 eventargs 中具有“RowIndex”和“ColumnIndex”属性。

于 2012-05-31T14:02:25.717 回答