Элементы управления находятся в неправильном месте, когда они привязаны к нижнему или правому краю в SplitContainer
, который находится в Panel
или другом SplitContainer
при высоких настройках DPI, таких как 160 % с .Net Framework 4.0 или 4.5. . Это происходит, когда для AutoScalMode
формы установлено значение Font или DPI.
Он работает правильно, если элемент управления привязан вверху слева или SplitContainer не находится в другом элементе управления, или используется .Net Framework 3.5, или при 100% DPI.
Как я могу это исправить?
При 100% DPI это выглядит правильно, вот так:
При 160% DPI кнопка находится не в том месте, как здесь: а>
1 ответ
В SplitterPanel
поместите TableLayoutPanel
с одной ячейкой и Dock = DockStyle.Fill
. В этой ячейке поместите Panel
с Dock = DockStyle.Fill
, затем поместите элементы управления в эту самую внутреннюю панель, и привязка будет работать правильно.
Другой способ, который не так удобен для элементов управления, которые не привязаны к правому нижнему углу, заключается в том, что в SplitterPanel
поместите Panel
с Dock = DockStyle.Bottom
(красный), а внутри него поместите еще один Panel
с помощью Dock = DockStyle.Right
(желтый), затем поместите элементы управления в эту самую внутреннюю панель.
Вот это при 100% DPI, как и было задумано:
И при 160% DPI кнопка все еще находится в правильном месте:
Похожие вопросы
Связанные вопросы
Новые вопросы
vb.net
Visual Basic.NET (VB.NET) - это мультипарадигмальный, управляемый, типобезопасный, объектно-ориентированный язык компьютерного программирования. Наряду с C # и F # это один из основных языков, нацеленных на .NET Framework. VB.NET можно рассматривать как эволюцию Microsoft Visual Basic 6 (VB6), но реализованную в Microsoft .NET Framework. НЕ ИСПОЛЬЗУЙТЕ этот тег для вопросов VB6, VBA или VBScript.
Dock.Fill
ред.? Это большое смещение местоположения для этой кнопки. Я считаю, что свойствоAnchor
для этой кнопки уже установлено наAnchorStyles.Bottom Or AnchorStyles.Right
SplitterPanel
нет свойстваDock
, но в верхнихSplitterPanel
,SplitContainer
иPanel
установленоDock.Fill
. Да, кнопка привязана к(...Bottom or ...Right)
.dpiAware
в манифесте. Большинство других элементов управления масштабируются правильно, в том числе в другихSplitContainer
, но не во вложенныхSplitContainer
.