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
        }