Usuário com melhor resposta
Mostrar TabPages apenas do user control c#

Pergunta
-
Olá amigos.
Estou desenvolvendo um user control que herda de TabControl mas estou com a seguinte dificuldade:
Criei uma propriedade chamada Listagem vide abaixo:
TabPage item;
[Category("Custom")]
[Description("Controle ativado")]
public TabPage Listagem
{
get
{
return item;
}
set { item = value;
}
}Quando eu estou com apenas um controle Tab no form tudo bem, funciona normalmente.
porém quando coloco mais de um controle Tab no form, a propriedade lista todas as tabs dos controles do form.
Existe uma maneira de listar apenas as tabs do controle selecionado nessa propriedade?
Eu criei uma funcionalidade que armazena os nomes em um List<string> pois o objetivo seria aparecer na propriedade um combobox com os nomes das Tabs que podem ser selecionadas:
public List<string> Lista_Pages(TabControl controle)
{
List<string> controls = new List<string>();
int tabs = controle.TabPages.Count;
for (int indice1 = 0; indice1 < tabs; indice1++)
{
controls.Add(controle.TabPages[indice1].Name);
}
return controls;
}porém não estou sabendo como criar a propriedade Listagem para que ela faça isso corretamente.
Poderiam me ajudar?
Respostas
-
Robson, eu consegui chegar mais perto da solução com o código abaixo:
peguei do post https://social.msdn.microsoft.com/Forums/en-US/71ac6aed-ffc3-4f66-845e-130637a94fac/list-to-enum-?forum=csharpgeneral
transformar uma list em um enum.
Obrigado
- Marcado como Resposta Robson William SilvaModerator quarta-feira, 23 de novembro de 2016 11:06
- Editado Fernando.Jarcen quarta-feira, 23 de novembro de 2016 17:13
Todas as Respostas
-
Bom dia Fernando.Jarcen,
Obrigado pela participação no Fórum MSDN.
O objetivo da propriedade é para que os nomes das tabs sejam adicionadas na List ?
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Bom dia Fernando.Jarcen,
Será que não é essa linha que está contando todas as tabs:
int tabs = controle.TabPages.Count;
Já tentou restringir para apenas o controle que você quer?
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Robson, eu consegui chegar mais perto da solução com o código abaixo:
peguei do post https://social.msdn.microsoft.com/Forums/en-US/71ac6aed-ffc3-4f66-845e-130637a94fac/list-to-enum-?forum=csharpgeneral
transformar uma list em um enum.
Obrigado
- Marcado como Resposta Robson William SilvaModerator quarta-feira, 23 de novembro de 2016 11:06
- Editado Fernando.Jarcen quarta-feira, 23 de novembro de 2016 17:13
-
Robson.
Consegui resolver acrescentando o seguinte código:
[TypeConverter(typeof(ValueTypeConverter))]
public string Value
{
get { return this.value; }
set
{
this.value = value;
selecionado = this.value;
if (DesignMode)
{
this.Invalidate();
}
}
}
protected override Control.ControlCollection CreateControlsInstance()
{
this.myValues = Lista_Pages(this);
if (DesignMode)
{
this.Invalidate();
}
return base.CreateControlsInstance();
}protected override void OnControlAdded(ControlEventArgs e)
{
base.OnControlAdded(e);
this.myValues = Lista_Pages(this);
}
protected override void OnControlRemoved(ControlEventArgs e)
{
base.OnControlRemoved(e);
this.myValues = Lista_Pages(this);
}