none
Mostrar TabPages apenas do user control c# RRS feed

  • 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?

    sábado, 19 de novembro de 2016 17:04

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


    quarta-feira, 23 de novembro de 2016 02:33

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.

    segunda-feira, 21 de novembro de 2016 12:48
    Moderador
  • 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.

    terça-feira, 22 de novembro de 2016 13:37
    Moderador
  • 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


    quarta-feira, 23 de novembro de 2016 02:33
  • 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);
            }

    quarta-feira, 23 de novembro de 2016 17:12