private void tablaProductos_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (proveedorActualizado == null) { proveedorActualizado = proveedor.copiar(proveedor); //Copia los valores del proveedor original a un nuevo objeto proveedor } switch (e.ColumnIndex) //Determina la columna que se editó { case 1: if (tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null) //Si la celda quedó vacía { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Descripcion = null; proveedorActualizado.Mensaje = "Celdas vacías"; } else { proveedorActualizado.Mensaje = null; ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Descripcion = (string)tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; } break; case 2: if (tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null) //Si la celda quedó vacía { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Fabricante = null; proveedorActualizado.Mensaje = "Celdas vacías"; } else { proveedorActualizado.Mensaje = null; ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Fabricante = (string)tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; } break; case 3: if (tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null) //Si la celda quedó vacía { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Cantidad = 0; proveedorActualizado.Mensaje = "Celdas vacías"; } else { proveedorActualizado.Mensaje = null; try { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Cantidad = Int32.Parse(tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()); } catch (Exception) { } } break; case 4: if (tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null) //Si la celda quedó vacía { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Precio = 0; proveedorActualizado.Mensaje = "Celdas vacías"; } else { try { ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Precio = decimal.Parse(tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()); proveedorActualizado.Mensaje = null; } catch (Exception) { tablaProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = null; proveedorActualizado.Mensaje = "Celdas vacías"; } } break; case 5: ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).DescripcionDetallada = (string)((DataGridView)sender).Rows[e.RowIndex].Cells[e.ColumnIndex].Value; break; } ((ProductoSerializable)proveedorActualizado.Productos[e.RowIndex]).Accion = 3; //Accion = 3: si hubo cambios, Accion != 3 no hubo cambios }