2014-06-27 15 views
7

Ho un'etichetta con AutoEllipsis = true e TextAlign = ContentAlignment.MiddleLeft. Quando inserisco un testo che non estende la larghezza dell'etichetta, il testo è allineato verticalmente al centro dell'etichetta.AutoEllipsis = true influenza la posizione verticale del testo

enter image description here

Tuttavia, quando il testo estende la larghezza dell'etichetta il testo non è allineato al centro, ma superiore allineato invece.

enter image description here

Perché si comporta in questo modo, e c'è un modo per mantenere il testo Centro allineati verticalmente?

risposta

11

Lo vedo. Sembra una limitazione nel winapi sottostante, DrawTextEx(). Che non ottiene molto aiuto dalla classe Label, non attiva l'opzione DT_SINGLELINE (nota anche come TextFormatFlags.SingleLine) poiché è in grado di eseguire il rendering di più righe. DrawTextEx() documenta che è necessario per ottenere il testo centrato verticalmente (DT_VCENTER). Quindi il vero bug è che non dovrebbe essere centrato affatto :) Si noti che si do ottenere il testo centrato quando si cresce l'etichetta verticalmente.

Il modo più semplice per aggirare il problema è impostare la proprietà UseCompatibleTextRendering dell'etichetta su True.