Come posizionare e ridimensionare un modulo (Windows Form .NET)

Quando viene creato un modulo, le dimensioni e la posizione sono inizialmente impostate su un valore predefinito. Le dimensioni predefinite di un modulo sono in genere una larghezza e un'altezza di 800x500 pixel. Il percorso iniziale, quando il modulo viene visualizzato, dipende da alcune impostazioni diverse.

È possibile modificare le dimensioni di un modulo in fase di progettazione con Visual Studio e in fase di esecuzione con il codice.

Importante

La documentazione di Desktop Guide per .NET 7 e .NET 6 è in fase di costruzione.

Ridimensionare con la finestra di progettazione

Dopo aver aggiunto un nuovo modulo al progetto, le dimensioni di un modulo vengono impostate in due modi diversi. In primo luogo, è possibile impostarlo con i grip delle dimensioni nella finestra di progettazione. Trascinando il bordo destro, il bordo inferiore o l'angolo, è possibile ridimensionare il form.

Right click solution explorer to add new form to windows forms project with grips

Il secondo modo in cui è possibile ridimensionare il modulo mentre la finestra di progettazione è aperta, è tramite il riquadro delle proprietà. Selezionare il modulo, quindi trovare il riquadro Proprietà in Visual Studio. Scorrere verso il basso fino alle dimensioni ed espanderlo. È possibile impostare manualmente Width e Height .

Right click solution explorer to add new form to windows forms project

Ridimensionamento nel codice

Anche se la finestra di progettazione imposta le dimensioni iniziali di un modulo, è possibile ridimensionarla tramite il codice. L'uso del codice per ridimensionare un modulo è utile quando un elemento relativo all'applicazione determina che le dimensioni predefinite del modulo non sono sufficienti.

Per ridimensionare un modulo, modificare , Sizeche rappresenta la larghezza e l'altezza del form.

Ridimensionare il modulo corrente

È possibile modificare le dimensioni del modulo corrente purché il codice sia in esecuzione nel contesto del modulo. Ad esempio, se è presente un pulsante su di esso, quando si Form1 fa clic richiama il Click gestore eventi per ridimensionare il modulo:

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

Ridimensionare un modulo diverso

È possibile modificare le dimensioni di un altro modulo dopo la creazione usando la variabile che fa riferimento al modulo. Si supponga, ad esempio, di avere due forme, Form1 (il modulo di avvio in questo esempio) e Form2. Form1 dispone di un pulsante che, quando si fa clic, richiama l'evento Click . Il gestore di questo evento crea una nuova istanza del Form2 modulo, imposta le dimensioni e quindi la visualizza:

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 l'oggetto Size non è impostato manualmente, le dimensioni predefinite del modulo sono le impostazioni impostate su durante la fase di progettazione.

Posizione con la finestra di progettazione

Quando viene creata e visualizzata un'istanza del modulo, la posizione iniziale del modulo viene determinata dalla StartPosition proprietà . La Location proprietà contiene la posizione corrente del modulo. Entrambe le proprietà possono essere impostate tramite la finestra di progettazione.

visual studio properties pane with start position highlighted

Enumerazione FormStartPosition Descrizione
CenterParent Il form viene centrato all'interno dei limiti del relativo formato padre.
CenterScreen Il modulo è centrato sulla visualizzazione corrente.
Manuale La posizione del form è determinata dalla proprietà Location .
WindowsDefaultBounds Il modulo viene posizionato nel percorso predefinito di Windows e viene ridimensionato in base alle dimensioni predefinite determinate da Windows.
WindowsDefaultLocation Il modulo viene posizionato nel percorso predefinito di Windows e non viene ridimensionato.

Il valore CenterParent funziona solo con i moduli che sono un form figlio MDI (Multiple Document Interface) o un modulo normale visualizzato con il ShowDialog metodo . CenterParent non ha alcun effetto su un modulo normale visualizzato con il Show metodo . Per centrare un modulo ( variabile) in un altro modulo (formparentForm variabile), usare il codice seguente:

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()

Posizione con codice

Anche se la finestra di progettazione può essere usata per impostare la posizione iniziale di un modulo, è possibile usare il codice per modificare la modalità di posizione iniziale o impostare manualmente la posizione. L'uso del codice per posizionare un modulo è utile se è necessario posizionare e ridimensionare manualmente un modulo in relazione allo schermo o ad altri moduli.

Spostare il modulo corrente

È possibile spostare il modulo corrente purché il codice sia in esecuzione all'interno del contesto del modulo. Ad esempio, se si dispone Form1 di un pulsante su di esso, che quando si fa clic richiama il Click gestore eventi. Il gestore in questo esempio modifica la posizione del modulo in alto a sinistra dello schermo impostando la Location proprietà :

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

Posizionare un modulo diverso

È possibile modificare la posizione di un altro modulo dopo la creazione usando la variabile che fa riferimento al modulo. Si supponga, ad esempio, di avere due forme, Form1 (il modulo di avvio in questo esempio) e Form2. Form1 dispone di un pulsante che, quando si fa clic, richiama l'evento Click . Il gestore di questo evento crea una nuova istanza del Form2 modulo e imposta il percorso:

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

Location Se l'oggetto non è impostato, la posizione predefinita del modulo è basata su ciò che la StartPosition proprietà è stata impostata su in fase di progettazione.

Vedi anche