Example #1
0
        /// <summary>
        /// Asigna el objeto principal al origen de datos
        /// <returns>void</returns>
        /// </summary>
        protected override void RefreshMainData()
        {
            if (_pregunta != null)
            {
                Datos.DataSource = _pregunta;
            }
            PgMng.Grow();

            Images.Show(_pregunta.ImagenWithPath, Imagen_PictureBox);
            PgMng.Grow();

            if (_lista_preguntas != null && _lista_preguntas.Count > 0)
            {
                PreguntaInfo item = _lista_preguntas.GetItem(_pregunta.OidPregunta);
                Numero_TB.Text = item.Codigo;
            }

            SortedBindingList <RespuestaExamen> ordenadas = RespuestaExamens.SortList(_pregunta.RespuestaExamens, "Opcion", ListSortDirection.Ascending);
            List <RespuestaExamen> lista = new List <RespuestaExamen>();

            foreach (RespuestaExamen item in ordenadas)
            {
                if ((_pregunta.Tipo == "Test") ||
                    (item.Texto != string.Empty &&
                     item.Texto != "."))
                {
                    lista.Add(item);
                }
            }

            Datos_Respuestas.DataSource = lista;
        }
Example #2
0
 /// <summary>
 /// Inicializa el Contexto
 /// </summary>
 private void InicializaContexto()
 {
     Contexto = new PreguntaInfo
     {
         Estatus = EstatusEnum.Activo
     };
 }
Example #3
0
 /// <summary>
 /// Metodo para Guardar/Modificar una entidad Pregunta
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public int Guardar(PreguntaInfo info)
 {
     try
     {
         Logger.Info();
         var id = 0;
         if (info.PreguntaID > 0)
         {
             id = da.Actualizar <PreguntaInfo>(info);
         }
         else
         {
             id = da.Insertar <PreguntaInfo>(info);
         }
         return(id);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
 /// <summary>
 /// Inicializa el Contexto
 /// </summary>
 private void InicializaContexto()
 {
     Contexto = new PreguntaInfo
     {
         Estatus           = EstatusEnum.Activo,
         UsuarioCreacionID = AuxConfiguracion.ObtenerUsuarioLogueado(),
     };
 }
        /// <summary>
        /// Metodo que valida los datos para guardar
        /// </summary>
        /// <returns></returns>
        private bool ValidaGuardar()
        {
            bool   resultado = true;
            string mensaje   = string.Empty;

            try
            {
                if (string.IsNullOrWhiteSpace(txtPreguntaID.Text))
                {
                    resultado = false;
                    mensaje   = Properties.Resources.PreguntaEdicion_MsgPreguntaIDRequerida;
                    txtPreguntaID.Focus();
                }
                else if (cmbTipoPregunta.SelectedItem == null || Contexto.TipoPreguntaID == 0)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.PreguntaEdicion_MsgTipoPreguntaIDRequerida;
                    cmbTipoPregunta.Focus();
                }
                else if (string.IsNullOrWhiteSpace(txtDescripcion.Text) || Contexto.Descripcion == string.Empty)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.PreguntaEdicion_MsgDescripcionRequerida;
                    txtDescripcion.Focus();
                }
                else if (cmbActivo.SelectedItem == null)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.PreguntaEdicion_MsgActivoRequerida;
                    cmbActivo.Focus();
                }
                else
                {
                    int    preguntaId  = Extensor.ValorEntero(txtPreguntaID.Text);
                    string descripcion = txtDescripcion.Text;

                    var          preguntaPL = new PreguntaBL();
                    PreguntaInfo pregunta   = preguntaPL.ObtenerPorTipoPreguntaDescripcion(Contexto.TipoPreguntaID, descripcion);

                    if (pregunta != null && (preguntaId == 0 || preguntaId != pregunta.PreguntaID))
                    {
                        resultado = false;
                        mensaje   = string.Format(Properties.Resources.PreguntaEdicion_MsgDescripcionExistente, pregunta.PreguntaID);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            if (!string.IsNullOrWhiteSpace(mensaje))
            {
                SkMessageBox.Show(this, mensaje, MessageBoxButton.OK, MessageImage.Warning);
            }
            return(resultado);
        }
Example #6
0
        private void Aceptar_Button_Click(object sender, EventArgs e)
        {
            _entity.Pregunta_Examens = Pregunta_Examens.NewChildList();

            foreach (TreeNode t in Arbol_TV.Nodes)
            {
                foreach (TreeNode preg in t.Nodes)
                {
                    if (preg.Checked && preg.ImageKey == Properties.Settings.Default.PREGUNTA_DISPONIBLE_ICON)
                    {
                        PreguntaInfo p = Preg.GetItem(((PreguntaInfo)preg.Tag).Oid);

                        //if (!Esta(((PreguntaInfo)preg.Tag).Oid))
                        //{
                        Pregunta_Examen pregunta = Pregunta_Examen.NewChild(_entity);
                        pregunta.OidPregunta = p.Oid;
                        _entity.Pregunta_Examens.AddItem(pregunta);
                        //}
                        //if (_entity.FechaExamen.Date.Equals(DateTime.MaxValue.Date))
                        //    p.FechaDisponibilidad = DateTime.MaxValue;
                        //else
                        //    p.FechaDisponibilidad = _entity.FechaExamen.Date.AddYears(1);
                        //p.Reservada = true;
                        //p.Bloqueada = false; // se libera porque sino se podría confundir con una pregunta que está en un examen emitido
                        //_memo_preguntas += ((Pregunta)preg.Tag).Oid.ToString() + ";";
                    }
                    //else
                    //{
                    //    //si estaba pero se ha deseleccionado hay que marcarla como disponible
                    //    if (Esta(((PreguntaInfo)preg.Tag).Oid))
                    //    {
                    //        PreguntaInfo p = Preg.GetItem(((PreguntaInfo)preg.Tag).Oid);

                    //        //hay que buscar el indice de la Pregunta_Examen y quitarla de la lista
                    //        int index = 0;
                    //        foreach (Pregunta_Examen item in _entity.Pregunta_Examens)
                    //        {
                    //            if (item.OidPregunta == p.Oid)
                    //                break;
                    //            index++;
                    //        }

                    //        _entity.Pregunta_Examens.RemoveAt(index);

                    //        //p.FechaDisponibilidad = DateTime.Today;
                    //        //p.Reservada = false;
                    //    }
                    //}
                }
            }
            //_entity.MemoPreguntas = _memo_preguntas;
            //_modulo.Preguntas = Preg;
            Close();
        }
 public PreguntasViewForm(long oid, PreguntaList preguntas, bool ismodal)
     : base(ismodal)
 {
     InitializeComponent();
     ListaInfo      = preguntas;
     _pregunta_info = PreguntaInfo.Get(oid, true);
     if (ListaInfo != null)
     {
         SetFormData();
         this.Text = Resources.Labels.PREGUNTA_EDIT_TITLE;
     }
     _mf_type = ManagerFormType.MFView;
 }
Example #8
0
        protected override void EmitirAction()
        {
            _entity.PreguntaExamens = PreguntaExamens.NewChildList();

            if (Entity.FechaExamen.Date.Equals(DateTime.MaxValue.Date))
            {
                MessageBox.Show("No se puede emitir un examen que no tiene fecha de examen.");
                return;
            }

            if (Entity.Pregunta_Examens.Count == 0)
            {
                MessageBox.Show("No se puede emitir un examen que no tiene preguntas.");
                return;
            }

            PgMng.Reset((Preguntas_Grid.Rows.Count * 2) + 2, 1, "Guardando estado actual de las preguntas...", this);

            foreach (DataGridViewRow row in Preguntas_Grid.Rows)
            {
                PreguntaInfo p = _preguntas_modulo.GetItem(((PreguntaInfo)row.DataBoundItem).Oid);
                if (!p.Activa)
                {
                    continue;
                }

                //se añade la nueva PreguntaExamen al examen a partir de la Pregunta
                PreguntaExamen   pexamen  = _entity.PreguntaExamens.NewItem(_entity);
                FCriteria <long> criteria = new FCriteria <long>("OidPregunta", p.Oid);
                pexamen.CopyValues(p);
                pexamen.Orden = Convert.ToInt64(row.Cells[N_Orden.Name].Value);

                List <RespuestaInfo> respuestas = _respuestas_modulo.GetSubList(criteria);
                foreach (RespuestaInfo item in respuestas)
                {
                    if (item.OidPregunta == p.Oid)
                    {
                        RespuestaExamen rexamen = RespuestaExamen.NewChild(pexamen);
                        rexamen.CopyValues(item);
                        rexamen.OidExamen = _entity.Oid;
                        rexamen.MarkItemChild();
                        pexamen.RespuestaExamens.AddItem(rexamen);
                    }
                }
                PgMng.Grow();
            }

            Entity.FechaEmision = DateTime.Now;

            SaveAction();
        }
Example #9
0
        /// <summary>
        /// Obtiene una lista paginada de Pregunta
        /// </summary>
        /// <param name="pagina"></param>
        /// <param name="filtro"></param>
        /// <returns></returns>
        public ResultadoInfo <PreguntaInfo> ObtenerPorPagina(PaginacionInfo pagina, PreguntaInfo filtro)
        {
            try
            {
                Logger.Info();
                ResultadoInfo <PreguntaInfo> result = new ResultadoInfo <PreguntaInfo>();
                var condicion = da.Tabla <PreguntaInfo>().Where(e => e.Estatus == filtro.Estatus);
                if (filtro.PreguntaID > 0)
                {
                    condicion = condicion.Where(e => e.PreguntaID == filtro.PreguntaID);
                }
                if (!string.IsNullOrEmpty(filtro.Descripcion))
                {
                    condicion = condicion.Where(e => e.Descripcion.Contains(filtro.Descripcion));
                }
                if (filtro.TipoPregunta != null && filtro.TipoPregunta.TipoPreguntaID != 0)
                {
                    condicion = condicion.Where(e => e.TipoPreguntaID == filtro.TipoPregunta.TipoPreguntaID);
                }
                result.TotalRegistros = condicion.Count();

                int inicio = pagina.Inicio;
                int limite = pagina.Limite;
                if (inicio > 1)
                {
                    int limiteReal = (limite - inicio) + 1;
                    inicio = (limite / limiteReal);
                    limite = limiteReal;
                }
                var paginado = condicion
                               .OrderBy(e => e.Descripcion)
                               .Skip((inicio - 1) * limite)
                               .Take(limite);



                result.Lista = paginado.ToList();
                AgregarTipoPregunta(result.Lista);
                return(result);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
 /// <summary>
 /// Evento que se ejecuta mientras se esta cerrando la ventana
 /// </summary>
 /// <param name="e"></param>
 protected override void OnClosing(CancelEventArgs e)
 {
     if (confirmaSalir)
     {
         MessageBoxResult result = SkMessageBox.Show(this, Properties.Resources.Msg_CerrarSinGuardar, MessageBoxButton.YesNo,
                                                     MessageImage.Question);
         if (result == MessageBoxResult.Yes)
         {
             Contexto = null;
         }
         else
         {
             e.Cancel = true;
         }
     }
 }
Example #11
0
 /// <summary>
 /// Metodo para Guardar/Modificar una entidad Pregunta
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public int Guardar(PreguntaInfo info)
 {
     try
     {
         Logger.Info();
         return(preguntaDALORM.Guardar(info));
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        public override void DeleteObject(long oid)
        {
            //if (MessageBox.Show(moleQule.Face.Resources.Messages.DELETE_CONFIRM,
            //                    moleQule.Face.Resources.Labels.ADVISE_TITLE,
            //                    MessageBoxButtons.YesNoCancel,
            //                    MessageBoxIcon.Question) == DialogResult.Yes)
            //{
            try
            {
                if (!List.Contains(ActiveOID))
                {
                    PreguntaInfo item = PreguntaInfo.Get(ActiveOID, false);
                    if (item != null)
                    {
                        List            = Preguntas.GetPreguntasModulo(item.OidModulo);
                        _filter_results = Preguntas.SortList(List, SortProperty, SortDirection);
                        //ApplyFilter();
                    }
                    else
                    {
                        MessageBox.Show("No se ha podido cargar la pregunta seleccionada");
                    }
                }
                Pregunta pregunta = List.GetItem(oid);
                if (pregunta.Reservada)
                {
                    MessageBox.Show("No se puede eliminar una pregunta incluída en un examen" +
                                    Environment.NewLine +
                                    "que aún no se ha celebrado.");
                }
                else
                {
                    //Pregunta.Delete(oid);
                    List.Remove(pregunta);

                    _action_result = DialogResult.OK;

                    ExecuteAction(molAction.FilterAll);
                }
            }
            catch (DataPortalException ex)
            {
                MessageBox.Show(iQExceptionHandler.GetiQException(ex).Message);
            }
            //}
        }
Example #13
0
 /// <summary>
 /// Obtiene una lista paginada de Pregunta
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public ResultadoInfo <PreguntaInfo> ObtenerPorPagina(PaginacionInfo pagina, PreguntaInfo filtro)
 {
     try
     {
         Logger.Info();
         return(preguntaDALORM.ObtenerPorPagina(pagina, filtro));
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        protected override void SetPreguntaAnterior()
        {
            int index = ListaInfo.IndexOf(_pregunta_info);

            if (index > 0)
            {
                _pregunta_info = PreguntaInfo.Get(ListaInfo[index - 1].Oid, true);
                //Datos.DataSource = _pregunta_info;
                //RellenaHistoria();
                //Datos_Respuestas.DataSource = _pregunta_info.Respuestas;
                //Images.Show(_pregunta_info.Imagen, Principal.FOTOS_PREGUNTAS_PATH, Imagen_PictureBox);
                RefreshMainData();
            }
            SetDependentControlSource(Modulo_CB.Name);

            if (_pregunta_info.Tipo == "Desarrollo")
            {
                Respuestas_Grid.Visible        = false;
                Respuestas_Grid.Enabled        = false;
                Respuestas_BT.Visible          = false;
                Respuestas_BT.Enabled          = false;
                ModeloRespuesta_TB.Visible     = true;
                ModeloRespuesta_TB.Enabled     = false;
                ModeloRespuesta_LB.Visible     = true;
                ModeloRespuesta_LB.Enabled     = true;
                ModeloRespuesta_BT.Visible     = true;
                ModeloRespuesta_BT.Enabled     = false;
                ModeloRespuestaView_BT.Visible = true;
                ModeloRespuestaView_BT.Enabled = true;
            }
            else
            {
                ModeloRespuesta_TB.Visible     = false;
                ModeloRespuesta_TB.Enabled     = false;
                ModeloRespuesta_LB.Visible     = false;
                ModeloRespuesta_LB.Enabled     = false;
                ModeloRespuesta_BT.Visible     = false;
                ModeloRespuesta_BT.Enabled     = false;
                ModeloRespuestaView_BT.Visible = false;
                ModeloRespuestaView_BT.Enabled = false;
                Respuestas_Grid.Visible        = true;
                Respuestas_Grid.Enabled        = true;
                Respuestas_BT.Visible          = true;
                Respuestas_BT.Enabled          = true;
            }
        }
Example #15
0
 /// <summary>
 /// Obtiene la lista para mostrar en el grid
 /// </summary>
 private void ObtenerListaPregunta(int inicio, int limite)
 {
     try
     {
         var          preguntaPL = new PreguntaBL();
         PreguntaInfo filtros    = ObtenerFiltros();
         if (ucPaginacion.ContextoAnterior != null)
         {
             bool contextosIguales = ucPaginacion.CompararObjetos(Contexto, ucPaginacion.ContextoAnterior);
             if (!contextosIguales)
             {
                 ucPaginacion.Inicio = 1;
                 inicio = 1;
             }
         }
         var pagina = new PaginacionInfo {
             Inicio = inicio, Limite = limite
         };
         ResultadoInfo <PreguntaInfo> resultadoInfo = preguntaPL.ObtenerPorPagina(pagina, filtros);
         if (resultadoInfo != null && resultadoInfo.Lista != null &&
             resultadoInfo.Lista.Count > 0)
         {
             gridDatos.ItemsSource       = resultadoInfo.Lista;
             ucPaginacion.TotalRegistros = resultadoInfo.TotalRegistros;
         }
         else
         {
             ucPaginacion.TotalRegistros = 0;
             gridDatos.ItemsSource       = new List <Pregunta>();
         }
     }
     catch (ExcepcionGenerica)
     {
         SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.Pregunta_ErrorBuscar, MessageBoxButton.OK, MessageImage.Error);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.Pregunta_ErrorBuscar, MessageBoxButton.OK, MessageImage.Error);
     }
 }
        protected override void CellContentClick(int column, int row)
        {
            switch (Preguntas_Grid.Columns[column].Name)
            {
            case "Ver_BT":
            {
                string memo = _entity.MemoPreguntas;

                if (memo != string.Empty)
                {
                    memo = memo.Substring(0, memo.Length - 1);
                }
                memo = memo.Replace(';', ',');

                PreguntaList preguntas = PreguntaList.GetPreguntasByList(memo);

                PreguntaInfo      info = (PreguntaInfo)Preguntas_Grid.Rows[row].DataBoundItem;
                PreguntasViewForm form = new PreguntasViewForm(info.Oid, preguntas, true);
                form.ShowDialog();
            }
            break;
            }
        }
        public void SetSourceData(ExamenInfo item, ModuloInfo modulo, PreguntaList preguntas)
        {
            _modulo               = modulo;
            _submodulos           = SubmoduloList.GetModuloList(_modulo.Oid, false);
            _temas                = TemaList.GetModuloList(_modulo.Oid, false);
            _preguntas_modulo     = preguntas;
            _preguntas_exameninfo = item.Preguntas;
            _examen               = item;

            this.Text = Resources.Labels.RESUMEN_EXAMEN_TITLE;
            lista     = new List <RegistroResumen>();
            //string memo_preguntas = ";" + item;
            long contador = 0;

            foreach (SubmoduloInfo obj in _submodulos)
            {
                foreach (TemaInfo tema in _temas)
                {
                    if (tema.OidSubmodulo == obj.Oid)
                    {
                        foreach (Pregunta_ExamenInfo p in _preguntas_exameninfo)
                        {
                            PreguntaInfo info = _preguntas_modulo.GetItem(p.OidPregunta);
                            if (info.OidTema == tema.Oid)
                            {
                                lista = RegistroResumen.ContabilizaPregunta(lista, obj.Oid, obj.Codigo + " " + obj.Texto, tema.Codigo);
                                contador++;
                            }
                        }
                    }
                }
            }
            lista.Add(new RegistroResumen("TODOS", "TODOS", contador));

            RefreshMainData();
        }
Example #18
0
        protected override void PrintAction()
        {
            if (Entity.Pregunta_Examens.Count == 0)
            {
                return;
            }

            moleQule.Library.Timer t = new moleQule.Library.Timer();
            t.Start();

            //se obliga a guardar el examen antes de imprimir por si durante la impresión hubiera algún problema
            //quedan guardadas las modificaciones que pudieran no haberse guardado
            //if (Entity.IsDirty)
            //{
            //DialogResult result = MessageBox.Show(Resources.Messages.GUARDADO_EXAMEN,
            //    moleQule.Face.Resources.Labels.ADVISE_TITLE, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            //if (result == DialogResult.OK)
            //{
            try
            {
                ValidateInput();
            }
            catch (iQValidationException ex)
            {
                MessageBox.Show(ex.Message,
                                moleQule.Face.Resources.Labels.ADVISE_TITLE,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                return;
            }
            //}
            //else
            //    return;
            //}

            Entity.PreguntaExamens = PreguntaExamens.NewChildList();

            string memo = string.Empty;

            foreach (Pregunta_Examen item in Entity.Pregunta_Examens)
            {
                memo += item.OidPregunta.ToString() + ",";
            }

            if (memo != string.Empty)
            {
                memo = memo.Substring(0, memo.Length - 1);
            }
            RespuestaList respuestas = RespuestaList.GetRespuestasExamenList(memo);

            foreach (DataGridViewRow row in Preguntas_Grid.Rows)
            {
                PreguntaInfo p = _preguntas_modulo.GetItem(((PreguntaInfo)row.DataBoundItem).Oid);
                t.Record("Obtener pregunta de la lista de preguntas del examen");

                PreguntaExamen pexamen = PreguntaExamen.NewChild(_entity);
                pexamen.CopyValues(p);
                pexamen.Orden = Convert.ToInt64(row.Cells[N_Orden.Name].Value);
                pexamen.MarkItemChild();
                t.Record("Crear PreguntaExamen");

                Entity.PreguntaExamens.AddItem(pexamen);
                FCriteria <long> criteria = new FCriteria <long>("OidPregunta", p.Oid);

                foreach (RespuestaInfo item in respuestas)
                {
                    if (p.Oid == item.OidPregunta)
                    {
                        RespuestaExamen rexamen = RespuestaExamen.NewChild(pexamen);
                        rexamen.CopyValues(item);
                        rexamen.MarkItemChild();
                        pexamen.RespuestaExamens.AddItem(rexamen);
                    }
                }
            }

            //Preguntas preguntas_examen = null;/* Pregunta.GetPreguntasByList(memo);*/
            PreguntaList preguntas_examen_list = PreguntaList.GetPreguntasByList(memo);

            if (EntityInfo.Desarrollo)
            {
                //tiene que llamar a ExamenDesarrolloReportForm
                ExamenDesarrolloReportForm form = new ExamenDesarrolloReportForm(true, EntityInfo, preguntas_examen_list, _entity.Pregunta_Examens);
                form.ShowDialog();
            }
            else
            {
                //tiene que llamar a ExamenTestReportForm
                ExamenTestReportForm form = new ExamenTestReportForm(true, EntityInfo, preguntas_examen_list, _entity.Pregunta_Examens);
                form.ShowDialog();
            }

            Entity.PreguntaExamens = PreguntaExamens.NewChildList();
        }
 /// <summary>
 /// Constructor para editar una entidad Pregunta Existente
 /// </summary>
 /// <param name="preguntaInfo"></param>
 public PreguntaEdicion(PreguntaInfo preguntaInfo)
 {
     InitializeComponent();
     CargaComboTipoPregunta();
     Contexto = preguntaInfo;
 }
Example #20
0
        protected override void CellContentClick(int column, int row)
        {
            switch (Preguntas_Grid.Columns[column].Name)
            {
            case "Ordenar_BT":
            {
                OrdenarPreguntasInputForm form = new OrdenarPreguntasInputForm(true, row + 1);
                form.SetSourceData(Entity, Preguntas_Grid.Rows.Count);
                form.ShowDialog();

                RellenaPreguntas();
            }
            break;

            case "Ver_BT":
            {
                //Pregunta.OpenSession();
                string memo = string.Empty;

                foreach (Pregunta_Examen item in Entity.Pregunta_Examens)
                {
                    memo += item.OidPregunta.ToString() + ",";
                }

                if (memo != string.Empty)
                {
                    memo = memo.Substring(0, memo.Length - 1);
                }

                PreguntaList preguntas = PreguntaList.GetPreguntasByList(memo);

                PreguntaInfo      info = (PreguntaInfo)Preguntas_Grid.Rows[row].DataBoundItem;
                PreguntasViewForm form = new PreguntasViewForm(info.Oid, preguntas, true);
                form.ShowDialog();
            }
            break;

            case "Editar_BT":
            {
                string memo = string.Empty;

                foreach (Pregunta_Examen item in Entity.Pregunta_Examens)
                {
                    memo += item.OidPregunta.ToString() + ",";
                }

                if (memo != string.Empty)
                {
                    memo = memo.Substring(0, memo.Length - 1);
                }

                Preguntas    preguntas = Preguntas.GetPreguntasByList(memo, _entity.SessionCode);
                Preguntas    ordenadas = Preguntas.NewList();
                PreguntaInfo info      = (PreguntaInfo)Preguntas_Grid.Rows[row].DataBoundItem;

                //se ordenan las preguntas para que se vayan mostrando en el mismo orden que en el examen
                foreach (Pregunta_Examen item in _entity.Pregunta_Examens)
                {
                    ordenadas.AddItem(preguntas.GetItem(item.OidPregunta));
                }

                Pregunta activa = ordenadas.GetItem(info.Oid);
                SortedBindingList <Pregunta> sorted = Preguntas.SortList(ordenadas, "Codigo", ListSortDirection.Ascending);

                PreguntasEditForm form = new PreguntasEditForm(activa, sorted, true);
                form.ShowDialog();

                //se recarga la lista de preguntas a seleccionar para que estén actualizadas
                PreguntasModulo = PreguntaList.GetPreguntasModulo(_entity.OidModulo, _entity.MemoPreguntas);

                RellenaPreguntas();
                //preguntas.CloseSession();
                ordenadas.CloseSession();
            }
            break;

            case "Eliminar_BT":
            {
                DialogResult result;

                result = MessageBox.Show("¿Está seguro que desea eliminar la pregunta seleccionada?", "Aviso", MessageBoxButtons.YesNo);

                if (result == DialogResult.Yes)
                {
                    //string memo_preguntas = Entity.MemoPreguntas;
                    //int pos = 0;

                    //long oid_eliminada = ((PreguntaInfo)Preguntas_Grid.Rows[row].DataBoundItem).Oid;

                    //string[] lista = Entity.MemoPreguntas.Split(';');
                    //Entity.MemoPreguntas = string.Empty;

                    //foreach (string oid in lista)
                    //{
                    //    try
                    //    {
                    //        long oid_pregunta = Convert.ToInt32(oid);
                    //        if (oid_pregunta != oid_eliminada)
                    //            Entity.MemoPreguntas += oid_pregunta + ";";
                    //        else
                    //        {
                    //            Pregunta item = _preguntas.GetItem(oid_pregunta);
                    //            item.Reservada = false;
                    //        }
                    //    }
                    //    catch
                    //    {
                    //        continue;
                    //    }
                    //}

                    foreach (Pregunta_Examen item in Entity.Pregunta_Examens)
                    {
                        if (item.OidPregunta == ((PreguntaInfo)Preguntas_Grid.Rows[row].DataBoundItem).Oid)
                        {
                            Entity.Pregunta_Examens.Remove(item);
                            break;
                        }
                    }

                    //while (memo_preguntas != string.Empty)
                    //{
                    //    string pregunta;
                    //    int index = memo_preguntas.IndexOf(";");
                    //    pregunta = memo_preguntas.Substring(0, index + 1);
                    //    memo_preguntas = memo_preguntas.Substring(index + 1);
                    //    if (pos != row)
                    //        Entity.MemoPreguntas += pregunta;
                    //    else
                    //    {
                    //        int l = pregunta.Length;
                    //        Pregunta p = _modulo.Preguntas.GetItem(Convert.ToInt64(pregunta.Substring(0, l - 1)));
                    //        p.Reservada = false;

                    //    }
                    //    pos++;
                    //}

                    RellenaPreguntas();
                }
            }
            break;
            }
        }