Inquiridor
Problema ao deixar Control Visible

Pergunta
-
Bom dia pessoal,
estou enfrentando um problema...
Criei um componente parecido com um tabcontrol, que dependendo do item selecionado faz aparecer um control da lista this.Controls
então quando é alterado o index do "selecionado", na propriedade "set" eu faco um foreach e deixo todos os controls false, e depois deixo o só atual em verdadeiro.
foreach (Control ctrl in this.Controls) { ctrl.Visible = false; } mSelectedTab = (cpTabPage)Controls[value]; mSelectedTab.Visible = true;
o Problema é que quando eu dou
mSelectedTab.Visible = true;
alguns itens da coleção this.Controls trocam de posição...
Segue os prints para melhor visualização...
antes de dar o visible...
depois de dar o visible = true;
Estava fazendo uns teste e deixei assim
foreach (Control ctrl in this.Controls) { ctrl.Visible = true; ctrl.Visible = false; }
dava um visible = true e depois um visible = false, se eu deixar assim tudo funciona, a ordem dos itens no this.Controls, não é alterado.. porém na troca de item o componente fica "piscando"....
Não faço ideia do que possa ser...
Se alguem souber o que pode estar ocorrendo...
Agradeço pela atenção...
att,
Marco
Todas as Respostas
-
-
-
-
Marco, boa noite.
Na realidade ele dá uma piscada só não é isso ?
Se for ver pelo seu código, isso é normal já que você faz todos eles sumirem primeiro e depois faz um aparecer.
O ideal é você fazer o selecionado ser visualizado na frente e depois sumir com o restante.
Será que isso não resolve o problema?
Testa lá e nos conte o resultado.
Abraços !
Diego Murakami
- MCP, MS, MCSD
* Por favor "Marcar como Resposta" caso esta for útil para sua dúvida. -
olá, testando percebi que se eu seleciona-se aba1, aba2, aba3, na sequencia.. não acontecia isso.. então resolvi que quando adicionasse a aba, ele seleciona-se a aba inserida..
public override void Add( Control value ) { cpTabPage p = value as cpTabPage; p.SendToBack(); base.Add( p ); (this.owner as cpTabControl).SelectedIndex = (this.owner as cpTabControl).Controls.Count - 1; }
Isso resolveu mas não sei o porque rsrsrsrsrsrrs...
Obrigado pela ajuda
att,
Marco
- Sugerido como Resposta Diego Murakami segunda-feira, 23 de junho de 2014 13:57
-
olá, testando percebi que se eu seleciona-se aba1, aba2, aba3, na sequencia.. não acontecia isso.. então resolvi que quando adicionasse a aba, ele seleciona-se a aba inserida..
public override void Add( Control value ) { cpTabPage p = value as cpTabPage; p.SendToBack(); base.Add( p ); (this.owner as cpTabControl).SelectedIndex = (this.owner as cpTabControl).Controls.Count - 1; }
Isso resolveu mas não sei o porque rsrsrsrsrsrrs...
Obrigado pela ajuda
att,
Marco