none
como cerrar una tabpage RRS feed

  • Pregunta

  • hola a todos, tengo una alicacion para windows y que utiliza tabpage o sea creo la tabpage y agrego un control dentro de la misma, ejemplo un boton, si quiero que este boton cierre la tabpage que el pertenece, como lo hago.
    martes, 6 de febrero de 2018 17:39

Respuestas

  • No estoy seguro de que es lo que quieres pero  por lo regular se cierra el formulario (Form) y no el tabpage que tienes dentro de ese formulario, si lo que quieres es cerrar el formulario

    en el evento click del boton

    me.close     y eso es todo lo que tendrias que hacer

    martes, 6 de febrero de 2018 18:13
  • si el boton esta contenido en el tappage cosa que dices que es asi.

    para cerrarlo (entiendo que te refieres a destruirlo)

    TabPage tp =  (tabPage)sender.Parent;  // sender es el boton en su evento clic

    TabControl tc = (TabControl)tp.Parent;

    tc.RemoveTab(tp);

    martes, 6 de febrero de 2018 18:46

Todas las respuestas

  • No estoy seguro de que es lo que quieres pero  por lo regular se cierra el formulario (Form) y no el tabpage que tienes dentro de ese formulario, si lo que quieres es cerrar el formulario

    en el evento click del boton

    me.close     y eso es todo lo que tendrias que hacer

    martes, 6 de febrero de 2018 18:13
  • si el boton esta contenido en el tappage cosa que dices que es asi.

    para cerrarlo (entiendo que te refieres a destruirlo)

    TabPage tp =  (tabPage)sender.Parent;  // sender es el boton en su evento clic

    TabControl tc = (TabControl)tp.Parent;

    tc.RemoveTab(tp);

    martes, 6 de febrero de 2018 18:46
  • Gracias Efrain Diaz y pricipalmente para ti vyrcyrus_ por tu contundente respuesta porque es lo que buscaba...

    miren el ejemplo:
    tabpage1 con su boton de cierre.


    tabpage2 con su boton de cierre.


    ########### codigo ###########
    using System;using System.Windows.Forms;namespace tabPage_buttonClose_foro{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            // mio            tabControl1.SelectedTab.Dispose();        }        private void button2_Click(object sender, EventArgs e)        {            // foro            TabPage tp = (TabPage)button1.Parent;            TabControl tc = (TabControl)tp.Parent;            tc.SelectedTab.Dispose();        }    }}


    el problema con el "mio" es que tengo que tener alcance a tabControl1 para mandar destruir el tabpage.
    Una vez probando la app, noto el siguiente error, si primero accionamos el button1 y luego el button2, nos muestra el siguente error:


    sin envargo al hacerlo al reves no hay error, si yo voy a usar la opcion del foro pq es la que mejor se me acomoda como puedo evitar el error este.

    --------------------------------------
    buscando un poco, en la ayuda encontre esto

    Form root = button1.FindForm();
    TabControl tc = new TabControl();
    foreach (var item in root.Controls.Find("tabControl1", true))
    {
        tc = (TabControl)item;
    }

    esto tiene mucha utilizacion en distintos proyectos y mas cuando utilizo userControl o cuando creo el componente desde el codigo.
    jueves, 8 de febrero de 2018 22:08