Неправильно расположены местоположения во вложенном SplitContainer при высоком DPI - PullRequest
0 голосов
/ 21 марта 2020

Элементы управления находятся в неправильном месте, когда они привязаны к нижней или правой части в SplitContainer, который находится в Panel или другом SplitContainer при высоких настройках DPI, таких как 160%. Net Framework 4.0 или 4.5. Это происходит с AutoScalMode формы, установленным либо в Font, либо в DPI.

Это работает правильно, если элемент управления привязан вверху слева или SplitContainer не находится в другом элементе управления, или не используется. Net Framework 3.5 или при 100% DPI.

Как я могу это исправить?

При 100% DPI это выглядит правильно, например: Form with button in bottom-right

При 160% DPI кнопка находится не в том месте, например: enter image description here

1 Ответ

1 голос
/ 22 марта 2020

В SplitterPanel положить TableLayoutPanel с одной ячейкой и Dock = DockStyle.Fill. В этой ячейке поместите Panel с Dock = DockStyle.Fill, затем поместите элементы управления в эту самую внутреннюю панель, и привязка будет работать правильно.

Другой способ, который не так удобен для элементов управления, которые не привязаны к нижней части. справа находится в SplitterPanel, поместите Panel с Dock = DockStyle.Bottom (красным) и внутри него, поместите еще один Panel с Dock = DockStyle.Right (желтым), затем поместите элементы управления в эту самую внутреннюю панель.

Здесь при 100% DPI, как и было задумано: Two nested Panels at 100% DPI

, а при 160% DPI кнопка все еще находится в правильном месте: Two nested Panels at 160% DPI

...