tab page ocultar net c# .net winforms tabcontrol tabpage

c# - ocultar - vb net tabcontrol hide tab page



Deshabilita y oculta un TabPage (10)

Esta pregunta ya tiene una respuesta aquí:

¿Cómo puedo hacer que un TabPage en un TabControl visible / oculto y habilitado / deshabilitado?



Basado en la respuesta de @Otiel, hice esas dos funciones:

Para alternar la visibilidad:

bool toggleTabPageVisibility(TabControl tc, TabPage tp) { //if tp is already visible if (tc.TabPages.IndexOf(tp) > -1) { tc.TabPages.Remove(tp); //no pages to show, hide tabcontrol if(tc.TabCount == 0) { tc.Visible = false; } return false; } //if tp is not visible else { tc.TabPages.Insert(tc.TabCount, tp); //guarantee tabcontrol visibility tc.Visible = true; tc.SelectTab(tp); return true; } }

Para establecer la visibilidad:

void setTabPageVisibility(TabControl tc, TabPage tp, bool visibility) { //if tp is not visible and visibility is set to true if ((visibility == true) && (tc.TabPages.IndexOf(tp) <= -1)) { tc.TabPages.Insert(tc.TabCount, tp); //guarantee tabcontrol visibility tc.Visible = true; tc.SelectTab(tp); } //if tp is visible and visibility is set to false else if ((visibility == false) && (tc.TabPages.IndexOf(tp) > -1)) { tc.TabPages.Remove(tp); //no pages to show, hide tabcontrol if(tc.TabCount == 0) { tc.Visible = false; } } //else do nothing }


Coloque la tabpage en el panel y oculte el panel usando

this.panel1.visible=false;

¡Está funcionando para mí!


Es posible que falte lo obvio porque ninguno de los siguientes elimina / cambia el aspecto de la pestaña

tabPage1.Enabled = false; // this disables the controls on it tabPage1.Visible = false; // this hides the controls on it.

Tampoco elimine la pestaña de la lista en la parte superior.


No sé sobre habilitar / deshabilitar (tal vez intente deshabilitar todos los controles en él). Si desea que estén ocultos, simplemente elimínelos de la colección de artículos. Si desea que sean visibles nuevamente, puede agregarlos nuevamente al control. Sin embargo, tendrá que ocuparse de su orden (almacenar sus referencias en alguna lista, o puede tener dos listas que contengan referencias a las TabPages visibles y las que no).


Podemos habilitar o deshabilitar las páginas de TABPAGE.ENABLE=true utilizando TABPAGE.ENABLE=true y TABPAGE.ENABLE=FALSE .

pero la propiedad visible no se puede aplicar a tabpages. Podemos hacerlo en lugar de propiedad visible, podemos hacerlo de esta manera.

private void HideTabPage(TabPage tp) { if (tabControl1.TabPages.Contains(tp)) tabControl1.TabPages.Remove(tp); } private void ShowTabPage(TabPage tp) { ShowTabPage(tp, tabControl1.TabPages.Count); } private void ShowTabPage(TabPage tp , int index) { if (tabControl1.TabPages.Contains(tp)) return; InsertTabPage(tp, index); } private void InsertTabPage(TabPage tabpage, int index) { if (index < 0 || index > tabControl1.TabCount) throw new ArgumentException("Index out of Range."); tabControl1.TabPages.Add(tabpage); if (index < tabControl1.TabCount - 1) do { SwapTabPages(tabpage, (tabControl1.TabPages[tabControl1.TabPages.IndexOf(tabpage) - 1])); } while (tabControl1.TabPages.IndexOf(tabpage) != index); tabControl1.SelectedTab = tabpage; } private void SwapTabPages(TabPage tp1, TabPage tp2) { if (tabControl1.TabPages.Contains(tp1) == false ||tabControl1.TabPages.Contains(tp2) == false) throw new ArgumentException("TabPages must be in the TabControls TabPageCollection."); int Index1 = tabControl1.TabPages.IndexOf(tp1); int Index2 = tabControl1.TabPages.IndexOf(tp2); tabControl1.TabPages[Index1] = tp2; tabControl1.TabPages[Index2] = tp1; tabControl1.SelectedIndex = tabControl1.SelectedIndex; string tp1Text, tp2Text; tp1Text = tp1.Text; tp2Text = tp2.Text; tp1.Text=tp2Text; tp2.Text=tp1Text; }


También tuve esta pregunta. tabPage.Visible no se implementó como se indicó anteriormente, lo cual fue de gran ayuda (+1). Descubrí que puedes anular el control y esto funcionará. Un poco de necroposting, pero pensé en publicar mi solución aquí para otros ...

[System.ComponentModel.DesignerCategory("Code")] public class MyTabPage : TabPage { private TabControl _parent; private bool _isVisible; private int _index = int.MinValue; public new bool Visible { get { return _isVisible; } set { if (_parent == null) _parent = this.Parent as TabControl; if (_parent == null) return; if (_index < 0) _index = _parent.TabPages.IndexOf(this); if (value && !_parent.TabPages.Contains(this)) { if (_index > 0 && _index < _parent.TabPages.Count) _parent.TabPages.Insert(_index, this); else _parent.TabPages.Add(this); } else if (!value && _parent.TabPages.Contains(this)) _parent.TabPages.Remove(this); _isVisible = value; base.Visible = value; } } protected override void InitLayout() { base.InitLayout(); _parent = Parent as TabControl; } }


// Hide TabPage and Remove the Header this.tabPage1.Hide(); this.tabPage3.Hide(); this.tabPage5.Hide(); tabControl1.TabPages.Remove(tabPage1); tabControl1.TabPages.Remove(tabPage3); tabControl1.TabPages.Remove(tabPage5); // Show TabPage and Visible the Header tabControl1.TabPages.Insert(0,tabPage1); tabControl1.TabPages.Insert(2, tabPage3); tabControl1.TabPages.Insert(4, tabPage5); this.tabPage1.Show(); this.tabPage3.Show(); this.tabPage5.Show(); tabControl1.SelectedTab = tabPage1;


//Move&Add is not good answer this.tabPage1.Parent = null; // hide this.tabPage1.Parent = this.tabControl1; //show


  • Habilitar deshabilitar

    El tabPage.Enabled parece estar funcionando bien, pero está marcado como "para no ser utilizado":

    Esta API es compatible con la infraestructura de .NET Framework y no está diseñada para ser utilizada directamente desde su código.
    Este miembro no es significativo para este control.

    Por lo tanto, debe deshabilitar la página de la pestaña deshabilitando todos los controles en la pestaña. Vea this por ejemplo.

  • Mostrar ocultar

    Hay una propiedad tabPage.Visible existente pero no parece tener ningún efecto. Además, también está marcado como "para no ser utilizado", y msdn recomienda eliminar la página de la pestaña del control de la pestaña para ocultarla:

    // Hide the tab page tabControl.TabPages.Remove(tabPage1); // Show the tab page (insert it to the correct position) tabControl.TabPages.Insert(0, tabPage1);