none
Barra de rolagem no form RRS feed

  • Pergunta

  •  

    Oi pessoal,

    A situação é a que segue: Tenho ordens para criar uma barra de rolagem em um form. É tranquilo rolar um form, se colocarmos o AutoScroll para true. Porém, por algum motivo, tenho que trabalhar com esta propriedade em False. Ou seja, eu tenho que configurar e implementar tudo da barra de rolagem.

    Claro, algumas coisas já sao conhecidas na app: Sei o tamanho total do que deve ser exibido (o conteudo tem 1500 px para baixo por exemplo), o heigth do form é 350. Com isto, configuro propriedades como Maximun, minumun, SmallChange e LargeChange.

    Entao, no evento do scrol, nao consigo atualizar a porção do form a ser mostrada. A app segue mostrando o topo do form ao rolar para baixo.

    Segue o código. Obrigado

     

    private int iAlturaDoForm;
            private int iLargeChange;
            private int iSmallChange;

            public Form1()
            {
                InitializeComponent();
               
                //guardo o tamanho que o form deveria ter
                iAlturaDoForm = panel1.Top;
                iAlturaDoForm += panel1.Height;
                //iAlturaDoForm += 30;

                //configura o tamanho máximo do scrollbar: qtos pixels ele vai rolar
                this.vScrollBar1.Maximum = iAlturaDoForm;

                //configura o quanto deve descer ao page down ou page up
                iLargeChange = this.Height;
                this.vScrollBar1.LargeChange = iLargeChange;

                //configura o minimo para zero, para q a barra apareça no topo do scroll
                this.vScrollBar1.Minimum = 0;
                label1.Text = this.vScrollBar1.Minimum.ToString();

                //configura a qtde a rolar ao clicar nas setas
                iSmallChange = 10;// (int)this.Height / 2;
                this.vScrollBar1.SmallChange = iSmallChange;

                this.VerticalScroll.Maximum = this.vScrollBar1.Maximum;

            }

            private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
            {           
                int y = e.NewValue;// obtenho o valor novo para a altura a ser mostrada
                //aqui já tenteni editar várias propriedades, sem sucesso
               
            }
    terça-feira, 24 de agosto de 2010 13:45

Respostas

  • this.VerticalScroll.Value = 500;

    onde o this é o formulário com o scroll.

    OBS: caso algum objeto receba foco, a posição do scroll será automaticamente alterado. talvez seja este o seu problema. tem algum objeto com foco.

    terça-feira, 24 de agosto de 2010 14:33

Todas as Respostas