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);
}
}
}
...
}
}
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: Como_Fazer, CSharp, Desenvolvimento, Dicas, DotNet
Comentários:
<< Página inicial
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
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
Assinar Postar comentários [Atom]
<< Página inicial
Assinar Postagens [Atom]
Postar um comentário