Se si dispone di un marchio e si desidera avere il controllo del la misura in verticale, è possibile effettuare le seguenti operazioni:
MyLabel.MaximumSize = new Size(MyLabel.Width, 0)
MyLabel.Height = MyLabel.PreferredHeight
MyLabel.MaximumSize = new Size(0, 0)
Questo è utile per esempio se si dispone di un'etichetta in un contenitore che può essere ridimensionata . In tal caso, puoi impostare la proprietà Anchor
in modo che l'etichetta venga ridimensionata orizzontalmente ma non verticalmente e, nell'evento di ridimensionamento, puoi adattare l'altezza utilizzando il metodo sopra riportato.
Per evitare il montaggio verticale deve essere interpretato come un nuovo evento di ridimensionamento, è possibile utilizzare un valore booleano:
bool _inVerticalFit = false;
E nel caso di ridimensionamento:
if (_inVerticalFit) return;
_inVerticalFit = true;
MyLabel.MaximumSize = new Size(MyLabel.Width, 0)
MyLabel.Height = MyLabel.PreferredHeight
MyLabel.MaximumSize = new Size(0, 0)
_inVerticalFit = false;
+1. Molto più semplice del mio suggerimento. – Brian
Selezionata come risposta a causa della semplicità, la risposta di Brian è anche perfettamente buona, ma questa è più facile da capire e mantenere. – Malfist
Cosa succede se ho bisogno di una larghezza del fluido? – Robin