/// <summary>
        /// Aplica el filtro correspondiente según la pestaña
        /// </summary>
        protected override void ApplyFilter()
        {
            switch (Filtros.SelectedTab.Name)
            {
            case "Todos_TP":
            {
                RefreshMainData();
            } break;

            case "Advanced_TP":
            {
                try
                {
                    foreach (EntityDriverForm item in _list_active_form)
                    {
                        if (item is PlantillaLocalizeForm)
                        {
                            ((LocalizeForm)item).Filter();
                        }
                    }

                    Datos.DataSource =
                        PlantillaExamenList.SortList(_lista_filtrada, "Codigo", ListSortDirection.Ascending);
                }
                catch (Exception)
                {
                    Datos.DataSource = _lista;
                }
            } break;

            case "Modulo_TP":
            {
                try
                {
                    CriteriaEx criteria = PlantillaExamen.GetCriteria(PlantillaExamen.OpenSession());
                    criteria.AddEq("OidModulo", ActiveItem.OidModulo);
                    _lista           = PlantillaExamenList.GetListByModulo(ActiveItem.OidModulo);
                    Datos.DataSource = PlantillaExamenList.SortList(_lista,
                                                                    "Codigo",
                                                                    ListSortDirection.Ascending);
                }
                catch (Exception)
                {
                    _lista = null;
                }
            } break;
            }
        }
        private void PlantillasMngForm_KeyPress(object sender, KeyPressEventArgs e)
        {
            DataGridViewColumn col;

            if (Tabla.CurrentCell == null)
            {
                if (Tabla.SortedColumn != null)
                {
                    col = Tabla.SortedColumn;
                }
                else
                {
                    col = Tabla.Columns[0];
                }
            }
            else
            {
                col = Tabla.Columns[Tabla.CurrentCell.ColumnIndex];
            }

            if (col.ValueType != null)
            {
                if (col.ValueType.Name == "Int32")
                {
                    return;
                }
                if (col.ValueType.Name == "Int64")
                {
                    return;
                }
                if (col.ValueType.Name == "Single")
                {
                    return;
                }
                if (col.ValueType.Name == "Double")
                {
                    return;
                }

                string     car      = e.KeyChar.ToString();
                CriteriaEx criteria = PlantillaExamen.GetCriteria(PlantillaExamen.OpenSession());

                criteria.AddStartsWith(col.DataPropertyName, car);

                // Buscamos las palabras que empiecen por el caracter
                PlantillaExamenList lista = PlantillaExamenList.GetList(criteria);
                SortedBindingList <PlantillaExamenInfo> list =
                    PlantillaExamenList.GetSortedList(lista, col.DataPropertyName, ListSortDirection.Ascending);

                int foundIndex;

                // Nos situamos en la primera aparicion de esa lista en la
                // que se muestra. Esto se hace pq se ha consultado la bd y no la lista actual
                // lo que puede dar lugar a inconsistencias si otro usuario a cambiado la bd
                foreach (PlantillaExamenInfo cli in list)
                {
                    foundIndex = Datos.IndexOf(cli);
                    if (foundIndex != -1)
                    {
                        Datos.Position = foundIndex;
                        break;
                    }
                }
            }
        }