none
Redimensionar Panel (em tempo de execução) RRS feed

  • Pergunta

  • Oi Pessoal,

    Preciso redimensionar um Panel em tempo de execução (da mesma forma que ocorre em tempo de design).
    Alguém tem alguma sugestão para me ajudar?

    Muito obrigado,
    Ewerton. 
    terça-feira, 4 de agosto de 2009 13:55

Respostas

  • Simplesmente redimensionar? o.o

    panel1.Size = new Size(<largura>, <altura>);

    Ooou, deu pra entender que você quer que o USUÁRIO possa redimensionar esse panel, clicando e arrastando as bordas.
    Nesse caso, não sei se já existe algo pronto, mas eu fiz um código pra isso:

    private void Form1_Load(object sender, EventArgs e)
            {
                borda_baixo = new Rectangle(0, panel1.Bounds.Height - 4, panel1.Bounds.Width, 4);
                borda_direita = new Rectangle(panel1.Bounds.Width - 4, 0, 4, panel1.Bounds.Height);
            }
    
            Rectangle borda_baixo, borda_direita;
            bool prabaixo = false;
            bool prolado = false;
            Rectangle tamanho_temporario;
    
            private void panel1_MouseMove(object sender, MouseEventArgs e)
            {
                if (prabaixo)
                {
                    panel1.Size = new Size(panel1.Size.Width, e.Y);
                }
                else if (prolado)
                {
                    panel1.Size = new Size(e.X, panel1.Size.Height);
                }
                else
                {
                    if (borda_baixo.Contains(e.Location))
                    {
                        Cursor = Cursors.SizeNS;
                    }
                    else if (borda_direita.Contains(e.Location))
                    {
                        Cursor = Cursors.SizeWE;
                    }
                    else
                    {
                        Cursor = Cursors.Default;
                    }
                }
            }
    
            private void panel1_MouseDown(object sender, MouseEventArgs e)
            {
                if (borda_baixo.Contains(e.Location))
                {
                    tamanho_temporario = panel1.Bounds;
                    prabaixo = true;
                }
                else if (borda_direita.Contains(e.Location))
                {
                    tamanho_temporario = panel1.Bounds;
                    prolado = true;
                }
            }
    
            private void panel1_MouseUp(object sender, MouseEventArgs e)
            {
                borda_baixo = new Rectangle(0, panel1.Bounds.Height - 4, panel1.Bounds.Width, 4);
                borda_direita = new Rectangle(panel1.Bounds.Width - 4, 0, 4, panel1.Bounds.Height);
                prabaixo = false;
                prolado = false;
            }

    Bom, é um código bem mal-formulado (tá, eu sou um programador iniciante ._.), mas funciona!
    Vou tentar fazer algo mais elaborado, com os quadradinhos do modo designer e tal..
    Se conseguir algo te aviso ;D
    terça-feira, 4 de agosto de 2009 16:00

Todas as Respostas

  • Simplesmente redimensionar? o.o

    panel1.Size = new Size(<largura>, <altura>);

    Ooou, deu pra entender que você quer que o USUÁRIO possa redimensionar esse panel, clicando e arrastando as bordas.
    Nesse caso, não sei se já existe algo pronto, mas eu fiz um código pra isso:

    private void Form1_Load(object sender, EventArgs e)
            {
                borda_baixo = new Rectangle(0, panel1.Bounds.Height - 4, panel1.Bounds.Width, 4);
                borda_direita = new Rectangle(panel1.Bounds.Width - 4, 0, 4, panel1.Bounds.Height);
            }
    
            Rectangle borda_baixo, borda_direita;
            bool prabaixo = false;
            bool prolado = false;
            Rectangle tamanho_temporario;
    
            private void panel1_MouseMove(object sender, MouseEventArgs e)
            {
                if (prabaixo)
                {
                    panel1.Size = new Size(panel1.Size.Width, e.Y);
                }
                else if (prolado)
                {
                    panel1.Size = new Size(e.X, panel1.Size.Height);
                }
                else
                {
                    if (borda_baixo.Contains(e.Location))
                    {
                        Cursor = Cursors.SizeNS;
                    }
                    else if (borda_direita.Contains(e.Location))
                    {
                        Cursor = Cursors.SizeWE;
                    }
                    else
                    {
                        Cursor = Cursors.Default;
                    }
                }
            }
    
            private void panel1_MouseDown(object sender, MouseEventArgs e)
            {
                if (borda_baixo.Contains(e.Location))
                {
                    tamanho_temporario = panel1.Bounds;
                    prabaixo = true;
                }
                else if (borda_direita.Contains(e.Location))
                {
                    tamanho_temporario = panel1.Bounds;
                    prolado = true;
                }
            }
    
            private void panel1_MouseUp(object sender, MouseEventArgs e)
            {
                borda_baixo = new Rectangle(0, panel1.Bounds.Height - 4, panel1.Bounds.Width, 4);
                borda_direita = new Rectangle(panel1.Bounds.Width - 4, 0, 4, panel1.Bounds.Height);
                prabaixo = false;
                prolado = false;
            }

    Bom, é um código bem mal-formulado (tá, eu sou um programador iniciante ._.), mas funciona!
    Vou tentar fazer algo mais elaborado, com os quadradinhos do modo designer e tal..
    Se conseguir algo te aviso ;D
    terça-feira, 4 de agosto de 2009 16:00
  • Valeu Igor. Obrigado mesmo!

    quarta-feira, 5 de agosto de 2009 11:58