static void Main(string[] args)
        {
            Arrabio   arrabio      = new Arrabio(1, "SinOperar", "Arrabio", "Ushuahia", 1000, "Excelente", "Azul");
            Arrabio   arrabioIgual = new Arrabio(1, "SinOperar", "Arrabio", "Ushuahia", 1000, "Excelente", "Azul");
            Reciclado reciclado    = new Reciclado(2, "Finalizado", "Reciclado", "CABA", 500, "Excelente", "Rojo");
            Arrabio   arrabioMismosDatosReciclado = new Arrabio(3, "Finalizado", "Arrabio", "CABA", 500, "Excelente", "Rojo");
            Reciclado recicladoIgual = new Reciclado(4, "Finalizado", "Reciclado", "CABA", 500, "Excelente", "Rojo");
            Reciclado recicladoOtro  = new Reciclado(5, "Laminado", "Reciclado", "Jujuy", 333, "Malo", "Verde");

            Stock stock = new Stock("Lista");

            stock = stock + arrabio;
            stock = stock + arrabioIgual;                //NO SE DEBERIA SUMAR
            stock = stock + arrabioMismosDatosReciclado; //con diferente tipo de dato
            stock = stock + reciclado;
            stock = stock + recicladoIgual;              //NO SE DEBERIA SUMAR
            stock = stock + recicladoOtro;
            Console.WriteLine(stock.ListaDeMateriales.Count);
            foreach (MateriaPrima item in stock.ListaDeMateriales)
            {
                Console.WriteLine(item.ToString());
            }
            Console.WriteLine("\nToque enter para seguir con la carga de XML");
            Console.ReadKey();
            foreach (Mensaje item in Mensaje.CargarXml())
            {
                Console.WriteLine(item.MostrarCampos());
            }
            Console.ReadKey();
        }
        /// <summary>
        /// Coloca los datos de los cuadros de texto en un nuevo Material a la BD
        /// Utiliza el okEditarDeshabilitarEventHandler para deshabilitar y habilitar botones
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOkEditar_Click(object sender, EventArgs e)
        {
            DataGridViewRow fila = this.dtgvView.SelectedRows[0];
            int             id   = (int)fila.Cells[0].Value;

            try
            {
                if (this.cmbMaterial.Text == "Arrabio")
                {
                    try
                    {
                        Arrabio arrabioAUpdate = new Arrabio
                        {
                            Material = this.cmbMaterial.Text,
                            Proceso  = this.cmbProceso.Text,
                            Origen   = this.cmbOrigen.Text,
                            Cantidad = int.Parse(this.txtCantidad.Text),
                            Calidad  = this.cmbCalidad.Text,
                            Color    = this.cmbColor.Text,
                            Id       = id
                        };
                        MateriaPrimaDAO.UpdateMateriaPrima(arrabioAUpdate);
                    }
                    catch (Exception ex)
                    {
                        throw new FaltanDatosException("Intento Editar un Material sin llenar todos sus datos");
                    }
                }
                else if (this.cmbMaterial.Text == "Reciclado")
                {
                    try
                    {
                        Reciclado recicladoAUpdate = new Reciclado
                        {
                            Material = this.cmbMaterial.Text,
                            Proceso  = this.cmbProceso.Text,
                            Origen   = this.cmbOrigen.Text,
                            Cantidad = int.Parse(this.txtCantidad.Text),
                            Calidad  = this.cmbCalidad.Text,
                            Color    = this.cmbColor.Text,
                            Id       = id
                        };
                        MateriaPrimaDAO.UpdateMateriaPrima(recicladoAUpdate);
                    }
                    catch (Exception ex)
                    {
                        throw new FaltanDatosException("Intento Editar un Material sin llenar todos sus datos");
                    }
                }
            }catch (FaltanDatosException ex)
            {
                MessageBox.Show(ex.Message, "La agarre a tiempo!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            ActualizarDataGrid();
            this.btnOkEditar.Enabled = false;
            this.okEditarDeshabilitarEventHandler.Invoke();
            Limpiar();
        }
 /// <summary>
 /// Al presionar el boton Agregar, se generara una nueva linea en el DataGrid con los valores establecidos en los textBox y comboBox.
 /// A su vez se crea una instancia de Mensaje que se agrega a la lista con los valores del material
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnAgregar_Click(object sender, EventArgs e)
 {
     if (CorroborarDatos())
     {
         if (this.cmbMaterial.Text == "Arrabio")
         {
             Arrabio arrabioAInsertar = new Arrabio
             {
                 Material = this.cmbMaterial.Text,
                 Proceso  = this.cmbProceso.Text,
                 Origen   = this.cmbOrigen.Text,
                 Cantidad = int.Parse(this.txtCantidad.Text),
                 Calidad  = this.cmbCalidad.Text,
                 Color    = this.cmbColor.Text
             };
             miMensaje = new Mensaje(this.cmbProceso.Text,
                                     this.cmbMaterial.Text,
                                     this.cmbOrigen.Text,
                                     this.txtCantidad.Text,
                                     this.cmbCalidad.Text,
                                     this.cmbColor.Text);
             MensajeCargado.Mensaje = miMensaje;
             listaMensajes          = listaMensajes + miMensaje;
             MateriaPrimaDAO.InsertMateriaPrima(arrabioAInsertar);
         }
         else if (this.cmbMaterial.Text == "Reciclado")
         {
             Reciclado recicladoAInsertar = new Reciclado
             {
                 Material = this.cmbMaterial.Text,
                 Proceso  = this.cmbProceso.Text,
                 Origen   = this.cmbOrigen.Text,
                 Cantidad = int.Parse(this.txtCantidad.Text),
                 Calidad  = this.cmbCalidad.Text,
                 Color    = this.cmbColor.Text
             };
             miMensaje = new Mensaje(this.cmbProceso.Text,
                                     this.cmbMaterial.Text,
                                     this.cmbOrigen.Text,
                                     this.txtCantidad.Text,
                                     this.cmbCalidad.Text,
                                     this.cmbColor.Text);
             MensajeCargado.Mensaje = miMensaje;
             listaMensajes          = listaMensajes + miMensaje;
             MateriaPrimaDAO.InsertMateriaPrima(recicladoAInsertar);
         }
         ActualizarDataGrid();
         Limpiar();
     }
     else
     {
         MessageBox.Show("Complete todos los campos, antes de continuar",
                         "Rellenar datos",
                         MessageBoxButtons.OK,
                         MessageBoxIcon.Information);
     }
 }
        static void Main(string[] args)
        {
            Arrabio   arrabio      = new Arrabio(EProceso.SinOperar, "Arrabio", "Ushuahia", 1000, ECalidad.Excelente, EColorMaterial.Azul);
            Arrabio   arrabioIgual = new Arrabio(EProceso.SinOperar, "Arrabio", "Ushuahia", 1000, ECalidad.Excelente, EColorMaterial.Azul);
            Reciclado reciclado    = new Reciclado(EProceso.CorteConGas, "Reciclado", "CABA", 333, ECalidad.Excelente, EColorMaterial.Rojo);
            Arrabio   arrabioMismosDatosReciclado = new Arrabio(EProceso.CorteConGas, "Arrabio", "CABA", 333, ECalidad.Excelente, EColorMaterial.Rojo);
            Reciclado recicladoIgual = new Reciclado(EProceso.CorteConGas, "Reciclado", "CABA", 333, ECalidad.Excelente, EColorMaterial.Rojo);
            Reciclado recicladoOtro  = new Reciclado(EProceso.Laminada, "Reciclado", "Ushuahia", 222, ECalidad.Malo, EColorMaterial.Descolorido);

            Stock stock = new Stock("Lista");

            stock = stock + arrabio;
            stock = stock + arrabioIgual;                //NO SE DEBERIA SUMAR
            stock = stock + arrabioMismosDatosReciclado; //con diferente tipo de dato
            stock = stock + reciclado;
            stock = stock + recicladoIgual;              //NO SE DEBERIA SUMAR
            stock = stock + recicladoOtro;
            Console.WriteLine(stock.ListaDeMateriales.Count);
            foreach (MateriaPrima item in stock.ListaDeMateriales)
            {
                Console.WriteLine(item.ToString());
            }
            Console.ReadKey();
        }
        /// <summary>
        /// Se genera cuando se carga el formulario, agregando informacion al dataGrid y colocando valores a los comboBox
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmPrincipal_Load(object sender, EventArgs e)
        {
            Arrabio   arrabio      = new Arrabio(EProceso.SinOperar, "Arrabio", "Ushuahia", 1000, ECalidad.Excelente, EColorMaterial.Azul);
            Arrabio   arrabioIgual = new Arrabio(EProceso.SinOperar, "Arrabio", "Ushuahia", 1000, ECalidad.Excelente, EColorMaterial.Azul);
            Reciclado reciclado    = new Reciclado(EProceso.CorteConGas, "Reciclado", "CABA", 333, ECalidad.Excelente, EColorMaterial.Rojo);
            Arrabio   arrabioMismosDatosReciclado = new Arrabio(EProceso.CorteConGas, "Arrabio", "CABA", 333, ECalidad.Excelente, EColorMaterial.Rojo);
            Reciclado recicladoIgual = new Reciclado(EProceso.CorteConGas, "Reciclado", "CABA", 333, ECalidad.Excelente, EColorMaterial.Rojo);
            Reciclado recicladoOtro  = new Reciclado(EProceso.Laminada, "Reciclado", "Ushuahia", 222, ECalidad.Malo, EColorMaterial.Descolorido);

            stock = stock + arrabio;
            stock = stock + arrabioIgual;                //NO SE DEBERIA SUMAR
            stock = stock + arrabioMismosDatosReciclado; //con diferente tipo de dato
            stock = stock + reciclado;
            stock = stock + recicladoIgual;              //NO SE DEBERIA SUMAR
            stock = stock + recicladoOtro;

            this.cmbProceso.DataSource  = Enum.GetNames(typeof(EProceso));
            this.cmbMaterial.DataSource = Enum.GetNames(typeof(ETipoMaterial));
            this.cmbCalidad.DataSource  = Enum.GetNames(typeof(ECalidad));
            this.cmbColor.DataSource    = Enum.GetNames(typeof(EColorMaterial));
            //this.dtgvView.DataSource = stock.ListaDeMateriales;
            AgregarData(stock.ListaDeMateriales);
            Limpiar();
        }