/// <summary>
        /// El boton cargar abre un nuevo fileDialog con la función ShowDialog. Luego utilizo la variable previamente declarada
        /// aux para poner los datos de lista file ahí dentro, y luego reemplazo los de listaFile con los de la fileName elegida
        /// en la función ShowDialog. Si el nuevo listaFile no se puede cargar, entonces vuelvo a sobrescribir los datos de la
        /// variable con los que estaban previamente en el aux. Si no hay problema con eso, pregunta al usuario si desea cargar,
        /// y si acepta, finalmente llama a la función Load de la clase genérica Lista. Si todo funciona bien, llama a CargarLista,
        /// sino, se muestra un mensaje de error. Si se puede cargar todo, entonces se agregan a la base de datos SQL todas las
        /// aeronaves cargadas.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnCargar_Click(object sender, EventArgs e)
        {
            AccesoDatos    accesoDatos = new AccesoDatos();
            OpenFileDialog fd          = new OpenFileDialog();

            fd.ShowDialog();

            aux       = listaFile;
            listaFile = "";
            listaFile = fd.FileName;

            if (listaFile != "")
            {
                if (MessageBox.Show("Desea Cargar?", "Atencion", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                {
                    string load = MiLista.Load(listaFile, 50, out MiLista);

                    foreach (Aeronave aeronave in MiLista.Elementos)
                    {
                        if (aeronave is Avion)
                        {
                            accesoDatos.AgregarAvion((Avion)aeronave);
                        }
                        else if (aeronave is Helicoptero)
                        {
                            accesoDatos.AgregarHelicoptero((Helicoptero)aeronave);
                        }
                        else
                        {
                            accesoDatos.AgregarGlobo((Globo)aeronave);
                        }
                    }

                    if (load == "")
                    {
                        CargarLista();
                    }
                    else
                    {
                        listaFile = aux;
                        MessageBox.Show("Error al cargar el archivo", "Atencion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    listaFile = aux;
                }
            }
            else
            {
                listaFile = aux;
            }
        }
        /// <summary>
        /// El botón guardar intenta validar que las variables de texto no estén vacías, e intenta pasar la variable anio a
        /// int también. Una vez que está todo correctamente verificado, las variables declaradas al comienzo del FormAgregarModificar
        /// que corresponden a las de todas las aeronaves, son igualadas a las que el usuario escribió. Luego se verifican las variables
        /// de texto particulares de cada aeronave (por ejemplo, los rotores de un helicóptero), y una vez que está todo verificado,
        /// se crea una nueva aeronave del tipo indicado, y la variable BSave a true, para luego poder informar al usuario que están
        /// los nuevos datos sin guardar. También agrega o modifica a SQL.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                anio = Convert.ToInt32(txtAnio.Text);
            }
            catch (Exception)
            {
                MessageBox.Show("Escriba un numero en año.", "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (txtAnio.Text == "" || TXTMarca.Text == "" || TXTModelo.Text == "")
            {
                MessageBox.Show("Una o más opciones están vacías.", "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            else
            {
                marca           = TXTMarca.Text;
                modelo          = TXTModelo.Text;
                velocidadMaxima = trackVelocidad.Value;
                alturaMaxima    = trackAltura.Value;
                peso            = trackPeso.Value;
                largo           = (float)trackLargo.Value / 100;
                ancho           = (float)trackAncho.Value / 100;
            }

            if (CMBAeronave.SelectedIndex == 0)
            {
                if (txtRotores.Text == "")
                {
                    MessageBox.Show("Una o más opciones están vacías.", "Error",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                try
                {
                    rotores = Convert.ToInt32(txtRotores.Text);
                }
                catch (Exception)
                {
                    MessageBox.Show("Escriba un numero en rotores.", "Error",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                tipoHelicoptero = (EHelicoptero)cmbTipo.SelectedIndex;

                aeronave = new Helicoptero(marca, modelo, velocidadMaxima, alturaMaxima, peso, largo,
                                           ancho, anio, rotores, tipoHelicoptero);
                BSave = true;

                AccesoDatos accesoDatos = new AccesoDatos();
                if (modo2 == EModo.Agregar)
                {
                    accesoDatos.AgregarHelicoptero((Helicoptero)aeronave);
                }
                else
                {
                    accesoDatos.ModificarHelicoptero((Helicoptero)aeronave);
                }
            }

            else if (CMBAeronave.SelectedIndex == 1)
            {
                motores = (EMotores)cmbMotor.SelectedIndex;

                aeronave = new Avion(marca, modelo, velocidadMaxima, alturaMaxima, peso, largo, ancho,
                                     anio, tipo, motores);
                BSave = true;

                AccesoDatos accesoDatos = new AccesoDatos();
                if (modo2 == EModo.Agregar)
                {
                    accesoDatos.AgregarAvion((Avion)aeronave);
                }
                else
                {
                    accesoDatos.ModificarAvion((Avion)aeronave);
                }
            }

            else if (CMBAeronave.SelectedIndex == 2)
            {
                if (txtPasajeros.Text == "")
                {
                    MessageBox.Show("Una o más opciones están vacías.", "Error",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                try
                {
                    pasajeros = Convert.ToInt32(txtPasajeros.Text);
                }
                catch (Exception)
                {
                    MessageBox.Show("Escriba un numero en pasajeros.", "Error",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                capacidadAire = trackCapacidadAire.Value;

                aeronave = new Globo(marca, modelo, velocidadMaxima, alturaMaxima, peso, largo, ancho,
                                     anio, capacidadAire, pasajeros);
                AccesoDatos accesoDatos = new AccesoDatos();
                if (modo2 == EModo.Agregar)
                {
                    accesoDatos.AgregarGlobo((Globo)aeronave);
                }
                else
                {
                    accesoDatos.ModificarGlobo((Globo)aeronave);
                }

                BSave = true;
            }
            this.Close();
        }