Как обрабатывать AutoSize в Windows Forms Textbox в true? - PullRequest
0 голосов
/ 04 ноября 2019

Я пишу пользовательские контейнеры для Windows Forms с автоматическим макетом. Документация Microsoft предлагает использовать следующий код для соблюдения свойства autosize элементов управления:

if (control.AutoSize)
{
    control.Size = control.GetPreferredSize(parentDisplayRectangle.Size);
}

Проблема в том, что текстовое поле, похоже, имеет AutoSize, жестко запрограммированный в true, и вызов упомянутого кода заканчивается следующим образом:

Autosized textbox

Как мне подходить к оценке предпочтительного размера текстовых полей в моих пользовательских элементах управления контейнером?

Обновление : после посещения Referencesource.

В классе DefaultLayout есть полезный комментарий:

    // Loop through the AutoSized controls and expand them if they are smaller than
    // their preferred size.  If expanding the controls causes overlap, bump the overlapped
    // control if it is AutoRelocatable.

Похоже, идея AutoSize - разрешить управлениебыть больше, чем задумано, а не точно точно размер, возвращаемый из GetPreferredSize.

Это должно быть подтверждено, хотя.

Источник: DockAndAnchorLayout.cs, класс DefaultLayout

...