如何使用 Windows 窗体中的 DataGridView 获取选定行中的所有单元格数据?

How to get all cells data in a selected row using DataGridView in WindowsForms?

我有一个 DataGridView 显示我的数据库中的一些数据,当我双击 datagridview 中的任何行时,我会在新的 window.

中获取它的内容

我有这个:

 private void ListaProductos_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
 {
 var content = ListaProductos.Rows[e.RowIndex].Cells["Name"].Value.ToString();
 var abrirNuevoProducto = new modificar_producto(content ); // I want to pass data to another form
 abrirNuevoProducto.Show(); // loads the new form with data for modification
 }

这对我有用,但是......像这样一个一个地做这个会很累很乏味:

var content = ListaProductos.Rows[e.RowIndex].Cells["Name"].Value.ToString();
var content2 = ListaProductos.Rows[e.RowIndex].Cells["Age"].Value.ToString();
var conten3 = ListaProductos.Rows[e.RowIndex].Cells["Surname"].Value.ToString();
var content4 = ListaProductos.Rows[e.RowIndex].Cells["Address"].Value.ToString();
... and 150 more columns
 var abrirNuevoProducto = new modificar_producto(content, content2, content3, content4 ... and so on); // I want to pass data to another form
 abrirNuevoProducto.Show(); // loads the new form with data for modification

我会使用列表来执行此操作,但是...,我想知道是否有一种简单的方法可以执行此操作,因为我正在尝试的方法非常疲倦和糟糕。或者我应该改用列表吗?

我需要将数据传递给另一个表单进行修改操作

如果您已经为此table定义了class,您可以使用如下代码

var products = new List<Products>(grid.SelectedRows.Count);

for(int index = 0; index < grid.SelectedRows.Count; index++)
{
   var selectedRow = grid.SelectedRows[index];
   var product = (Products)selectedRow.DataBoundItem;

   products.Add(prduct);
}

或者如果您没有 class 定义,您可以使用动态关键字

var products = new List<dynamic>(grid.SelectedRows.Count);

for(int index = 0; index < grid.SelectedRows.Count; index++)
{
   var selectedRow = grid.SelectedRows[index];
   var product = (dynamic)selectedRow.DataBoundItem;

   products.Add(prduct);
}