AutoEllipsis=true влияет на вертикальное расположение текста


У меня есть метка с AutoEllipsis = true и TextAlign = ContentAlignment.MiddleLeft. Когда я ввожу текст, который не расширяет ширину метки,текст выравнивается по вертикали до середины метки.

Введите описание изображения здесь

Однако, когда текст расширяет ширину метки, текст выравнивается не по середине, а по верху.

Введите описание изображения здесь

Почему он ведет себя таким образом, и есть ли способ выровнять текст по вертикали по центру?

1 7

1 ответ:

Я вижу это. Это выглядит как ограничение в базовом winapi, DrawTextEx () . Который не получает много помощи от класса Label, он не включает параметр DT_SINGLELINE (он же TextFormatFlags.SingleLine), так как он способен отображать несколько строк. DrawTextEx() документирует, что это необходимо для получения вертикально центрированного текста (DT_VCENTER). Так что реальная ошибка заключается в том, что он не должен быть центрирован вообще :) обратите внимание, что Вы делаете получить центрированный текст, когда вы растете надпись вертикально.

Самый простой способ обойти это-установить свойство UseCompatibleTextRendering метки в True.