Como posicionar e dimensionar um formulário (Windows Forms .NET)

Quando um formulário é criado, o tamanho e o local são inicialmente definidos como um valor padrão. O tamanho padrão de um formulário geralmente é uma largura e altura de 800x500 pixels. O local inicial, quando o formulário é exibido, depende de algumas configurações diferentes.

Você pode alterar o tamanho de um formulário em tempo de design com o Visual Studio e em tempo de execução com o código.

Redimensionar com o designer

Depois de adicionar um novo formulário ao projeto, o tamanho de um formulário é definido de duas maneiras diferentes. Primeiro, você pode configurá-lo com as alças de tamanho no designer. Ao arrastar a borda direita, a borda inferior ou o canto, você pode redimensionar o formulário.

Clique com o botão direito do mouse no gerenciador de soluções para adicionar um novo formulário ao projeto do Windows Forms com alças

A segunda maneira de redimensionar o formulário enquanto o designer está aberto é por meio do painel de propriedades. Selecione o formulário e localize o painel Propriedades no Visual Studio. Role para baixo até o tamanho e expanda-o. Você pode definir a Largura e a Altura manualmente.

Clique com o botão direito do mouse no gerenciador de soluções para adicionar um novo formulário ao projeto de formulários do Windows

Redimensionar no código

Mesmo que o designer defina o tamanho inicial de um formulário, você pode redimensioná-lo por meio do código. Usar o código para redimensionar um formulário é útil quando algo em seu aplicativo determina que o tamanho padrão do formulário é insuficiente.

Para redimensionar um formulário, altere o Size, que representa a largura e a altura do formulário.

Redimensionar o formulário atual

Você pode alterar o tamanho do formulário atual, desde que o código esteja sendo executado dentro do contexto do formulário. Por exemplo, se você tiver Form1 um botão nele, que, quando clicado, invoca o Click manipulador de eventos para redimensionar o formulário:

private void button1_Click(object sender, EventArgs e) =>
    Size = new Size(250, 200);
Private Sub Button1_Click(sender As Object, e As EventArgs)
    Size = New Drawing.Size(250, 200)
End Sub

Redimensionar um formulário diferente

Você pode alterar o tamanho de outro formulário depois que ele for criado usando a variável que faz referência ao formulário. Por exemplo, digamos que você tenha dois formulários, Form1 (o formulário de inicialização neste exemplo) e Form2. Form1 tem um botão que, quando clicado, invoca o Click evento. O manipulador desse evento cria uma nova instância do Form2 formulário, define o tamanho e o exibe:

private void button1_Click(object sender, EventArgs e)
{
    Form2 form = new Form2();
    form.Size = new Size(250, 200);
    form.Show();
}
Private Sub Button1_Click(sender As Object, e As EventArgs)
    Dim form = New Form2 With {
        .Size = New Drawing.Size(250, 200)
    }
    form.Show()
End Sub

Se o Size não for definido manualmente, o tamanho padrão do formulário será o que foi definido durante o tempo de design.

Posição com o designer

Quando uma instância de formulário é criada e exibida, o local inicial do formulário é determinado pela StartPosition propriedade. A Location propriedade contém o local atual no formulário. Ambas as propriedades podem ser definidas por meio do designer.

Painel de propriedades do Visual Studio com a posição inicial realçada

Enumeração FormStartPosition Descrição
Pai central O formulário é centralizado dentro dos limites do formulário pai.
Tela central O formulário é centralizado na exibição atual.
Manual A posição do formulário é determinada pela propriedade Location .
WindowsDefaultBounds O formulário é posicionado no local padrão do Windows e é redimensionado para o tamanho padrão determinado pelo Windows.
WindowsDefaultLocation O formulário é posicionado no local padrão do Windows e não é redimensionado.

O valor CenterParent só funciona com formulários que são um formulário filho MDI (interface de vários documentos) ou um formulário normal exibido com o ShowDialog método. CenterParent não tem efeito em uma forma normal que é exibida com o Show método. Para centralizar um formulário (form variable) em outro formulário (parentForm variable), use o seguinte código:

form.StartPosition = FormStartPosition.Manual;
form.Location = new Point(parentForm.Width / 2 - form.Width / 2 + parentForm.Location.X,
                          parentForm.Height / 2 - form.Height / 2 + parentForm.Location.Y);
form.Show();
form.StartPosition = Windows.Forms.FormStartPosition.CenterParent.Manual
form.Location = New Drawing.Point(parentForm.Width / 2 - form.Width / 2 + parentForm.Location.X,
                                  parentForm.Height / 2 - form.Height / 2 + parentForm.Location.Y)

form.Show()

Posição com código

Embora o designer possa ser usado para definir o local inicial de um formulário, você pode usar o código para alterar o modo de posição inicial ou definir o local manualmente. Usar o código para posicionar um formulário é útil se você precisar posicionar e dimensionar manualmente um formulário em relação à tela ou a outros formulários.

Mover o formulário atual

Você pode mover o formulário atual, desde que o código esteja em execução dentro do contexto do formulário. Por exemplo, se você tiver Form1 um botão nele, que, quando clicado, invoca o manipulador de Click eventos. O manipulador neste exemplo altera o local do formulário para o canto superior esquerdo da tela definindo a Location propriedade:

private void button1_Click(object sender, EventArgs e) =>
    Location = new Point(0, 0);
Private Sub Button1_Click(sender As Object, e As EventArgs)
    Location = New Drawing.Point(0, 0)
End Sub

Posicione uma forma diferente

Você pode alterar o local de outro formulário depois que ele for criado usando a variável que faz referência ao formulário. Por exemplo, digamos que você tenha dois formulários, Form1 (o formulário de inicialização neste exemplo) e Form2. Form1 tem um botão que, quando clicado, invoca o Click evento. O manipulador desse evento cria uma nova instância do Form2 formulário e define o local:

private void button1_Click(object sender, EventArgs e)
{
    Form2 form = new Form2();
    form.Location = new Point(0, 0);
    form.Show();
}
Private Sub Button1_Click(sender As Object, e As EventArgs)
    Dim form = New Form2 With {
        .Location = New Drawing.Point(0, 0)
    }
    form.Show()
End Sub

Se o Location não estiver definido, a posição padrão do formulário será baseada no que a StartPosition propriedade foi definida em tempo de design.

Confira também