public Listar_Datos_Formulario_Form(FORMULARIO form, int selectIndex)
        {
            InitializeComponent();
            specie = new SpeciesBL(Program.ContextData);
            quality = new QualityBL(Program.ContextData);
            state = new StateBL(Program.ContextData);
            notimberLine = new NonTimberLineBL(Program.ContextData);
            inventoryLine = new InventoryLineBL (Program.ContextData);
            regenerationLine = new RegenerationLineBL(Program.ContextData);

            this.form = form;
            especieBS.DataSource = specie.GetSpecies();
            calidadBS.DataSource = quality.GetQualities();
            estadoSanitarioBS.DataSource = state.GetStates();

            lineaInventarioBS.DataSource = form.LINEAINVENTARIO.Count == 0 ? new List<LINEAINVENTARIO>() : form.LINEAINVENTARIO;
            lineaInventarioDGW.DataSource = lineaInventarioBS;

            regeneracionBS.DataSource = form.LINEAREGENERACION.Count == 0 ? new List<LINEAREGENERACION>() : form.LINEAREGENERACION;
            regeneracionDGW.DataSource = regeneracionBS;

            noMaderablesBS.DataSource = form.LINEANOMADERABLES.Count == 0 ? new List<LINEANOMADERABLES>() : form.LINEANOMADERABLES;
            noMaderablesDGW.DataSource = noMaderablesBS;

            criterioInvCbx.SelectedIndex = 0;
            criterioNoMaderCbx.SelectedIndex = 0;
            criterioRegenCbx.SelectedIndex = 0;
            lineasTab.SelectedIndex = selectIndex;
        }
        public Crear_Editar_Formulario_Form(FORMULARIO f)
        {
            InitializeComponent();
            modified = false;
            if (f == null) newForm = new FORMULARIO();
            else newForm = f;

            project = new ProjectBL(Program.ContextData);
            species = new SpeciesBL(Program.ContextData);
            stratums = new StratumBL(Program.ContextData);
            quality = new QualityBL(Program.ContextData);
            state = new StateBL(Program.ContextData);
            form = new FormBL(Program.ContextData);
            lineInv = new InventoryLineBL(Program.ContextData);
            lineRegen = new  RegenerationLineBL(Program.ContextData);
            lineNonTimber = new NonTimberLineBL(Program.ContextData);
            typeUses = new TypeUseBL(Program.ContextData);

            int countEspecies = ((PROYECTO)Program.Cache.Get("project")).ESPECIE.ToList().Count;
            if (countEspecies != 0) especieBS.DataSource = ((PROYECTO)Program.Cache.Get("project")).ESPECIE.ToList().OrderBy(e => e.NOMCOMUN);
            else
            {
                MessageBox.Show("No existen especies asociadas a este proyecto, seleccione uno o mas especies.", "Parametros insuficiente.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
            }

            List<ESTRATO> listStratums = new List<ESTRATO>();
            foreach(LISTADODEESTRATOS list in ((PROYECTO)Program.Cache.Get("project")).LISTADODEESTRATOS)
            {
                listStratums.Add(list.ESTRATO);
            }
            estratoBS.DataSource =listStratums;
            if (estratoBS.Count != 0) estratoCbx.SelectedItem = (ESTRATO)estratoBS.Current;
            else estratoBS.Add(new ESTRATO() { DESCRIPESTRATO = "Diseño muestral simple." });

            calidadBS.DataSource = quality.GetQualities();

            estadoSanitarioBS.DataSource = state.GetStates();

            tipoUsoBS.DataSource=typeUses.GetTypeUse();
            tipoDeUsosLbc.DataSource = tipoUsoBS;
            tipoDeUsosLbc.DisplayMember ="DESCRIPCION";
            tipoDeUsosLbc.ValueMember = "NOMBRETIPOUSO";

            List<KeyValuePair<string, string>> data = new List<KeyValuePair<string, string>>();
            data.Add(new KeyValuePair<string, string>("BFB", "Bifurcacion Abajo de la A.P."));
            data.Add(new KeyValuePair<string, string>("NBF", "Ninguna Bifurcacion"));

            tipoArbolCbx.DataSource = data;
            tipoArbolCbx.DisplayMember = "Value";
            tipoArbolCbx.ValueMember = "Key";
            tipoArbolCbx.SelectedValue = "NBF";

            newLineNoTimber =  new LINEANOMADERABLES();

            if (f == null)
            {
                noMaderableBS.DataSource = new List<LINEANOMADERABLES>();
                regeneracionBS.DataSource = new List<LINEAREGENERACION>();
                lineaInvBS.DataSource = new List<LINEAINVENTARIO>();
                USUARIO user = (USUARIO)Program.Cache.Get("user");
                PROYECTO p = (PROYECTO)Program.Cache.Get("project");
                responsableTxt.Text = user.NOMBRES + " " + user.APELLIDOS;
                proyectoTxt.Text = p.LUGAR;
            }
            else
            {
                noMaderableBS.DataSource = newForm.LINEANOMADERABLES.ToList();
                regeneracionBS.DataSource = newForm.LINEAREGENERACION.ToList();
                lineaInvBS.DataSource = newForm.LINEAINVENTARIO.ToList();
                responsableTxt.Text = f.USUARIO.NOMBRES + " " + f.USUARIO.APELLIDOS;
                proyectoTxt.Text = f.PROYECTO.LUGAR;
                datosTabControl.Enabled = true;
                guardarformularioBtn.Text = "Actualizar formulario";
                finalDpk.Enabled = true;
                finalDpk.Value = (System.DateTime)newForm.HORAFINAL;
                inicioDpk.Enabled = false;
                this.Text = "Editando formulario e introduciendo datos";
                lineaInvBS.AddNew();
                regeneracionBS.AddNew();
                noMaderableBS.AddNew();
            }

            PROYECTO py = (PROYECTO)Program.Cache.Get("project");
            if (py.TIPODISENOMUESTRAL.NOMTIPODISEMUEST.ToString() == "SI")
            {
                estratoCbx.Enabled = false;
            }
            if(f!=null)formularioBS.DataSource = f;
            else formularioBS.DataSource = newForm;

            modified = true;
        }