segunda-feira, 10 de dezembro de 2007

 

Escondendo um TabPage em C#

Como a Microsoft esqueceu de incluir uma propriedade Visible para os TabPages do controle TabControl é necessário utilizar um artifício para ocultar e reapresentar um ou vários tabpages.
Abaixo eu apresento um exemplo dos métodos que devem ser codificados para simular o Visible do TabPage.
Obs.: No meu exemplo inserir um TabControl (tabControl1) e dois TabPages dentro dele (tabPage1 e tabPage2). No meu caso, o TabPage2 é que ficará oculto (Lembre-se que o primeiro índice de arrays no C# é o Zero).

namespace ...
{
    public partial class ...
    {
...
        private TabPage _tabPage2;
...
        // Ao iniciar a janela armazena a TabPage que precisará ser ocultada
        private void JanelaTeste_Load(object sender, EventArgs e)
        {
            // Armazena um ponteiro para a tabpage2
            this._tabPage2 = this.tabControl1.TabPages[1];

            // Oculta a visualização da tabpage2
            this.tabControl1.TabPages.RemoveAt(1);
        }
...
        private void ConfiguraTabPage2(bool abVisible)
        {
            if (abVisible)
            {
                // Se ela ainda não está visível
                if (this.tabControl1.TabPages.Count == 1)
                {
                    // torne-a visivel no TabControl
                    this.tabControl1.TabPages.Add (this._tabPage2);
                }
            }
            else
            {
                // Senão, oculta essa tabpage
                if (this.tabControl1.TabPages.Count == 2)
                {
                    this.tabControl1.TabPages.RemoveAt(1);
                }
            }
        }
...
    }
}

Marcadores: , , , ,


Comentários:
Estou desenvolvendo 1 tabcontrol com 3 tabpage, inicio com a primeira e as outras 2 ocultas com o seguinte comando na inicialização do form:

public formCadastroFamilias(string a, string b, string c)
{
InitializeComponent();
this.tabControlFamilias.TabPages.RemoveAt(1);
this.tabControlFamilias.TabPages.RemoveAt(1);
}
Vou navegando pelas abas e no fim de cada uma delas incluo o seguinte comando para continuar na próxima:

private void btnGravarPessoa_Click(object sender, EventArgs e)
{
this.tabControlFamilias.TabPages.Add(this.tabPageConjugue);
tabControlFamilias.SelectedTab = tabPageConjugue;
}
e:

private void btnSalvarConjugue_Click(object sender, EventArgs e)
{
this.tabControlFamilias.TabPages.Add(this.tabPageDependente);
tabControlFamilias.SelectedTab = tabPageDependente;
}

Por enquanto funciona legal, mas estou começando o programa e não tenho muita experiencia, gostaria que alguem falasse se tem albuma fala.

Abraços
Adriano
 

Postar um comentário

Assinar Postar comentários [Atom]





<< Página inicial

Add to Technorati Favorites Adicionar aos Favoritos BlogBlogs diHITT

Assinar Postagens [Atom]