Как я могу скрывать и показывать Tab TabControl?

Я использую один TabControl внутри формуляра, разработанного в C#, этот TabControl у него есть два Tabs и я нуждаюсь в том, чтобы смочь скрывать один и(или) показывать это в зависимости от состояния, которое прибывает как параметр с другого формуляра. Я не нахожу свойство типа Visible или в любом случае Enabled. Существует какой-то способ мочь скрывать tab внутри TabControl или по крайней мере дисквалифицировать это? Большое спасибо.

3
задан 23.04.2016, 01:46
3 ответа

У tabs winfoms нет свойства Visible, ты должен удалять это, если я не помню плохо, он делается посредством:

TabControl.TabPages.Remove(TabPage);

Edit:

AquГ - пример в Вебе Microsoft

3
ответ дан 24.11.2019, 14:32

Ты можешь занимать свойство parent, где чтобы скрывать tabitem, распределяешь ему недействительный parent

EsteTabItem.Parent = null;

И чтобы показывать, распределяешь ему tab контроль, в котором будут находить

EsteTabItem.Parent = TbCtrlGeneral;
2
ответ дан 24.11.2019, 14:32

В принципе контроль TabControl Windows Forms не позволяет показывать / скрывать карточку. То, что ты можешь делать, состоит в том, чтобы удалять ее, хотя ты потерял бы контроль этой карточки.

Способ это делать состоял бы в том, чтобы сохранять в array контроль типа TabPage, который ты пометил как невидимые, чтобы мочь добавлять их снова, когда ты сделаешь их видимыми.

Я надеюсь, что он не беспокоит, что написал код контроля, который это делает точно, он происходит от TabControl и поддерживает список невидимым контролем, чтобы показывать их после. Другой array (arrBoolPagesVisible) используется для того, чтобы поддерживать индексы и вводить контроль в том же месте, который был сначала.

Перемещая его индекс карточки, которую ты хочешь показать / скрыть в методе ShowTab этого контроля, ты получишь результат, который ты ищешь.

using System;
using System.Collections.Generic;

namespace Bau.Controls.TabControls
{
/// <summary>
///     Control que extiende <see cref="TabControl"/> para permitir ocultar fichas
/// </summary>
public class TabControlExtended : System.Windows.Forms.TabControl
{ // Variables con las páginas
        private List<System.Windows.Forms.TabPage> objColPages = null;
        private bool[] arrBoolPagesVisible;

    /// <summary>
    ///     Inicializa las variables antes de procesar
    /// </summary>  
    private void InitControl()
    { if (objColPages == null)
            { // Inicializa la colección de páginas y elementos visibles
                    objColPages = new List<System.Windows.Forms.TabPage>();
                    arrBoolPagesVisible = new bool[TabPages.Count];
                // Añade las páginas de la ficha a la colección e indica que son visibles
                    for (int intIndex = 0; intIndex < TabPages.Count; intIndex++)
                        { // Añade la página
                                objColPages.Add(TabPages[intIndex]);
                            // Indica que es visible
                                arrBoolPagesVisible[intIndex] = true;
                        }
            }
    }   

    /// <summary>
    ///     Muestra una ficha
    /// </summary>
    public void ShowTab(int intTab)
    { ShowHideTab(intTab, true);
    }

    /// <summary>
    ///     Oculta una ficha
    /// </summary>
    public void HideTab(int intTab)
    { ShowHideTab(intTab, false);
    }

    /// <summary>
    ///     Muestra / oculta una ficha
    /// </summary>
    public void ShowHideTab(int intTab, bool blnVisible)
    { // Inicializa el control
            InitControl();
        // Oculta la página
            arrBoolPagesVisible[intTab] = blnVisible;
        // Elimina todas las fichas
            TabPages.Clear();
        // Añade únicamente las fichas visibles
            for (int intIndex = 0; intIndex < objColPages.Count; intIndex++)
                if (arrBoolPagesVisible[intIndex])
                    TabPages.Add(objColPages[intIndex]);
    }

    /// <summary>
    ///     Cuenta el número de fichas visibles
    /// </summary>
    public int CountTabsVisible
    { get
            { int intNumber = 0;

                    // Cuenta el número de páginas visibles
                        if (objColPages != null)
                            for (int intIndex = 0; intIndex < arrBoolPagesVisible.Length; intIndex++)
                                if (arrBoolPagesVisible[intIndex])
                                    intNumber++;
                    // Devuelve el número de páginas visibles
                        return intNumber;
            }
    }
  }
}
1
ответ дан 24.11.2019, 14:32