private void PGECampos_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
        {
            PropertyGridEx.PropertyGridEx obj   = (PropertyGridEx.PropertyGridEx)s;
            PropertyGridEx.CustomProperty campo = null;
            foreach (PropertyGridEx.CustomProperty c in obj.Item)
            {
                if (c.Name == e.ChangedItem.Label)
                {
                    campo = c;
                    break;
                }
            }

            if (campo != null)
            {
                //Se asigno un campo
                if (((Clases.clsNodoTiny)nodoActual.Tag).tipoNodo == Clases.clsEnums.TipoNodo.Expediente)
                {
                    //Es un expediente
                    Clases.clsCampoDato myCampo = new Clases.clsCampoDato(Clases.clsCampoDato.TipoCampo.Expediente, ((Clases.clsNodoTiny)nodoActual.Tag).idNodo, campo.Tag.ToString());
                    myCampo.valor = campo.Value.ToString();
                    myCampo.guardarDatos();
                }
                else if (((Clases.clsNodoTiny)nodoActual.Tag).tipoNodo == Clases.clsEnums.TipoNodo.Documento)
                {
                    //Es un Documentos Final
                    Clases.clsCampoDato myCampo = new Clases.clsCampoDato(Clases.clsCampoDato.TipoCampo.Documento, PGECampos.Tag.ToString(), campo.Tag.ToString());
                    myCampo.valor = campo.Value.ToString();
                    myCampo.guardarDatos();
                }
            }
        }
        private void btnFinalizar_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.AppStarting;

            //Mandar Grabar los elementos en la Base de Datos

            //Grabar los Datos de los Expediente
            Clases.clsExpediente newExpediente = new Clases.clsExpediente("*");
            newExpediente.idLlave      = iTXTidUnico.Text.ToString().Trim();
            newExpediente.idPadre      = nodoBD.id;
            newExpediente.idFormulario = nodoBD.idFormulario.ToString();

            try
            {
                newExpediente.guardarDatos(Clases.vGlobales.id_User);
            }
            catch (InvalidOperationException er)
            {
                MessageBox.Show("Problemas al guardar Datos\n\r" + er.Message);
                Cursor = Cursors.Default;
                return;
            }

            //Grabar los Campos del Expediente
            foreach (PropertyGridEx.CustomProperty p in PGExpediente.Item)
            {
                if (p.Value.ToString().Trim().Length != 0)
                {
                    Clases.clsCampoDato campo = new Clases.clsCampoDato(Clases.clsCampoDato.TipoCampo.Expediente, newExpediente.id.ToString(), p.Tag.ToString());
                    campo.valor = p.Value.ToString();
                    if (!campo.guardarDatos(Clases.vGlobales.id_User))
                    {
                        MessageBox.Show(campo.msgError, "Error al Guardar datos del Campo " + p.Tag);
                    }
                }
            }



            //Grabar las imagenes en la Base de Datos
            //Por los Tipos de Documentos
            //Recorrer El arbol con los Tipos de Documentos.
            foreach (TreeNode nDocumento in tvTiposDocumentos.Nodes)
            {
                // Control de Avance de grabación
                Controles.frmGauge gauge = new Controles.frmGauge();
                gauge.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
                gauge.pb.Minimum    = 0;
                gauge.pb.Maximum    = imagenesCapturadas[nDocumento.Index].Images.Count - 1;
                gauge.pb.Value      = 0;
                gauge.Show();

                foreach (IScannedImage img in imagenesCapturadas[nDocumento.Index].Images)
                {
                    clsDocumento newDocumento = new clsDocumento("*");
                    newDocumento.idPadre           = Convert.ToInt16(nDocumento.Tag.ToString());
                    newDocumento.idUnicoExpediente = newExpediente.id;
                    newDocumento.orden             = imagenesCapturadas[nDocumento.Index].Images.IndexOf(img) + 1;

                    newDocumento.fijarImagen(img.GetImageBase64());

                    try
                    {
                        newDocumento.guardarDatos(Clases.vGlobales.id_User);
                    }
                    catch (InvalidOperationException er)
                    {
                        MessageBox.Show("Problemas al guardar Datos\n\r" + er.Message);
                        Cursor = Cursors.Default;
                        return;
                    }

                    try
                    {
                        newDocumento.guardarImagen(Clases.vGlobales.id_User);
                    }
                    catch (InvalidOperationException er)
                    {
                        MessageBox.Show("Problemas al guardar la Imagen\n\r" + er.Message);
                        Cursor = Cursors.Default;
                        return;
                    }

                    gauge.pb.PerformStep();
                    gauge.BringToFront();
                    System.Windows.Forms.Application.DoEvents();
                }

                gauge.Close();
                gauge.Dispose();
            }

            Cursor  = Cursors.Default;
            bsalida = true;
        }