Buscar

martes, 30 de junio de 2009

Ocultar un Tab (TabPage) en C#

Hace un tiempo me pusieron la tarea de ocultar una pestaña de un tab (un TabPage) cuando deschequiaran o mostrarlo cuando chequiaran un chekBox; entonces fue cuando me di cuenta que la propiedad Hide no sirve para nada. Y me puse a buscar como hacer esto, di con la pagina de Microsoft donde en la parte de comentarios dice “el método Hide de TabPage no ocultará la ficha. Para ocultar la ficha, debe quitar el control TabPage de la colección TabControl.TabPages”.
Asi que está es la forma como se oculta un Tab de un control Tab en C#:

if(chkimpresion.Cheked)
{
tabControl1.TabPages.Add(Impresion);//Impresión es el nombre que le dí al tab cuando lo cree. Y aquí lo muestro.
}
else
{
tabControl1.TabPages.Remove(Impresion);//Aquí se oculta.
}

Link
http://msdn.microsoft.com/es-es/library/system.windows.forms.tabpage(VS.80).aspx

Espero les sirva.

11 comentarios:

  1. Asi es mas fácil:
    para probar en un boton:

    private void button4_Click(object sender, EventArgs e){
    if (this.Text=="Oculta"){
    tabPage7.Parent = null;
    this.Text = "Muestra";
    }
    else
    {
    tabPage7.Parent = tabControl1;
    this.Text = "Oculta";
    }

    ResponderEliminar
  2. perdon mi tabcontrol tiene 7 tabs, pero lo pueden reemplazar por un nombre especifico

    ResponderEliminar
    Respuestas
    1. en el load del formulario poner

      private void data_aplicar_examencalificar_Load(object sender, EventArgs e)
      {
      P1.Visible = false;
      }

      Luego con un boton realizo lo siguiente:

      private void btn_pasaraexamen_Click(object sender, EventArgs e)
      {
      P1.Visible = true;

      P1.TabPages.Remove(TAB_02);
      P1.TabPages.Remove(TAB_03);
      P1.TabPages.Remove(TAB_04);
      P1.TabPages.Remove(TAB_05);
      P1.TabPages.Remove(TAB_06);
      P1.TabPages.Remove(TAB_07);
      P1.TabPages.Remove(TAB_08);
      P1.TabPages.Remove(TAB_09);
      P1.TabPages.Remove(TAB_10);
      P1.TabPages.Remove(TAB_11);
      P1.TabPages.Remove(TAB_12);
      P1.TabPages.Remove(TAB_13);
      P1.TabPages.Remove(TAB_14);
      P1.TabPages.Remove(TAB_15);
      P1.TabPages.Remove(TAB_TOTAL);
      P1.TabPages.Remove(TAB_MODIFICAR);
      P1.TabPages.Remove(TAB_ELIMINAR);
      }

      Saludos...

      Eliminar
  3. execelente si funciona!!!
    lo de anonimo!!!

    ResponderEliminar
  4. hey tengo un problema tengo varios tabcontrol y quiero que en cada una me aparesca un report diferente cual es la forma!!!

    ResponderEliminar
  5. Todo depende del reporteador que estas utilizando o del tipo de reporte que quiera mostrar, la forma mas fácil y simple es agregando un control de reporte a cada tab, y no es complicado, ya que cada control de reporte se comporta independiente de cada tab. en realidad no creo si entendí bien la pregunta, creo que necesita ser mas especifico.

    ResponderEliminar
  6. GRANDEE MANN MUCHAS GRACIASS ME SIRVIO DE MUCHO

    ResponderEliminar
  7. Gracias al anonimo del primer comment, despues de tanto tiempo, al fin pude hacerlo...

    ResponderEliminar
  8. private void btn_pasaraexamen_Click(object sender, EventArgs e)
    {
    P1.Visible = true;

    P1.TabPages.Remove(TAB_02);
    P1.TabPages.Remove(TAB_03);
    P1.TabPages.Remove(TAB_04);
    P1.TabPages.Remove(TAB_05);
    P1.TabPages.Remove(TAB_06);
    P1.TabPages.Remove(TAB_07);
    P1.TabPages.Remove(TAB_08);
    P1.TabPages.Remove(TAB_09);
    P1.TabPages.Remove(TAB_10);
    P1.TabPages.Remove(TAB_11);
    P1.TabPages.Remove(TAB_12);
    P1.TabPages.Remove(TAB_13);
    P1.TabPages.Remove(TAB_14);
    P1.TabPages.Remove(TAB_15);
    P1.TabPages.Remove(TAB_TOTAL);
    P1.TabPages.Remove(TAB_MODIFICAR);
    P1.TabPages.Remove(TAB_ELIMINAR);
    }

    ResponderEliminar