Centrare i controlli all’interno di un modulo in .NET (Winforms)?

Sto cercando di centrare un controllo di dimensioni fisse all’interno di un modulo.

Fuori di interesse, c’è un modo non idiota di fare questo? Quello che voglio veramente è qualcosa di analogo alla proprietà css text-align.

Al momento, sto impostando la proprietà padding del modulo circostante su una dimensione adatta e impostando la proprietà Dock del controllo da riempire.

È ansible ottenere questo con l’uso di ancore . O più precisamente il non uso di loro .

I controlli sono ancorati di default nella parte in alto a sinistra del modulo, il che significa che quando la dimensione del modulo verrà modificata, la loro distanza dal lato superiore sinistro del modulo rimarrà costante. Se si modifica l’ancoraggio di controllo in basso a sinistra, il controllo manterrà la stessa distanza dal lato inferiore e sinistro del modulo quando il modulo viene ridimensionato.

Distriggersre l’ancora in una direzione manterrà il controllo centrato in quella direzione durante il ridimensionamento.

NOTA: la distriggerszione dell’ancoraggio tramite la finestra delle proprietà in VS2015 potrebbe richiedere l’inserimento di Nessuno, Nessuno (invece del valore predefinito Superiore, Sinistra)

myControl.Left = (this.ClientSize.Width - myControl.Width) / 2 ; myControl.Top = (this.ClientSize.Height - myControl.Height) / 2; 

Poiché non si specifica se il modulo può ridimensionare o meno, esiste un modo semplice se non si cura di ridimensionare (se si cura, andare con la soluzione Mitch Wheats):

Seleziona il controllo -> Formato (opzione di menu) -> Centro in finestra -> In orizzontale o Verticalmente

Ho trovato un ottimo modo per farlo e funzionerà con più controlli. Aggiungi un TableLayout con 3 colonne. Rendi la colonna centrale una dimensione assoluta (ma molto spazio è necessario). Imposta le due colonne esterne al 100%. Aggiungi un pannello alla colonna centrale e aggiungi i controlli necessari e posizionali dove vuoi. Quel pannello centrale rimarrà ora centrato nella tua forma.

Puoi mettere il controllo che vuoi centrare all’interno di un pannello e impostare i valori di riempimento sinistro e destro su qualcosa di più grande del valore predefinito. Fintanto che sono uguali e il tuo controllo è ancorato ai lati del Pannello, apparirà centrato in quel Pannello. Quindi puoi ancorare il pannello del contenitore al suo genitore secondo necessità.

Per centrare il pulsante nel pannello o nell’altro contenitore, segui questo passaggio:

  1. In fase di progettazione imposta la posizione
  2. Vai alle proprietà Ancoraggio del pulsante e imposta questo valore come immagine seguente

inserisci la descrizione dell'immagine qui

Implica il bulbo oculare (beh, suppongo che potresti estrarre una calcolatrice e calcolare) ma basta inserire il suddetto controllo sul modulo e quindi rimuovere qualsiasi ancoraggio (ancora = Nessuno).

puoi mettere tutti i tuoi controlli sul pannello e poi scrivere un codice per spostare il pannello al centro del modulo.

 panelMain.Location = new Point(ClientSize.Width / 2 - panelMain.Size.Width / 2, ClientSize.Height / 2 - panelMain.Size.Height / 2); panelMain.Anchor = AnchorStyles.None; 

Inoltre, se vuoi allinearlo al centro di un altro controllo:

 //The "ctrlParent" is the one on which you want to align "ctrlToCenter". //"ctrlParent" can be your "form name" or any other control such as "grid name" and etc. ctrlToCenter.Parent = ctrlParent; ctrlToCenter.Left = (ctrlToCenter.Parent.Width - ctrlToCenter.Width) / 2; ctrlToCenter.Top = (ctrlToCenter.Parent.Height - ctrlToCenter.Height) / 2;