Размер формы Windows во время выполнения
У меня проблема с моей Visual Studio. Форма всегда меняет свой размер во время выполнения.
Размер формы при оформлении 1732; 1005, как показано на рисунке ниже:
Но когда я запускаю программу, размер формы меняется на меньший размер (новый размер: 868;491), как показано ниже:
Я уже пытался изменить DPI и разрешение ПК, который я использую, но он все тот же. Что я изменю, чтобы получить фактический размер разработанного пользовательского интерфейса во время выполнения?
4 ответа
Попробуйте установить "AutoScaleMode" в форме "Нет". Я обнаружил, что моя форма была установлена в режим "Шрифт". После того, как я изменил размер шрифта в нескольких компонентах графического интерфейса, во время выполнения макет формы сильно отличался от того, что я видел в конструкторе. После установки режима масштабирования "Нет", форма выглядела великолепно во время выполнения.
Может ли быть так, что формы AutoSize = true
а также AutoSizeMode = GrowAndShrink
? Затем измените AutoSize на false или установите AutoSizeMode на GrowOnly
Попробуйте установить FormBorderStyle в FixedDialog или что-то связанное с Fixed****. Также вы можете попробовать установить MinimumSize и MaximumSize в 1732; 1005.
Обратите внимание, что при изменении настроек DPI на вашем компьютере вы выходите из системы и снова входите в систему, чтобы изменения вступили в силу. В общем, вы не знаете, какие настройки DPI установлены на компьютере пользователя. Измените настройки DPI приложений на "Per Monitor DPI Aware" и установите размер во время выполнения:
using System.Runtime.InteropServices;
...
[DllImport("SHCore.dll", SetLastError = true)]
public static extern bool SetProcessDpiAwareness(PROCESS_DPI_AWARENESS awareness);
public enum PROCESS_DPI_AWARENESS
{
Process_DPI_Unaware = 0,
Process_System_DPI_Aware = 1,
Process_Per_Monitor_DPI_Aware = 2
}
public Form1()
{
InitializeComponent();
SetProcessDpiAwareness(
PROCESS_DPI_AWARENESS.Process_Per_Monitor_DPI_Aware);
Size = new System.Drawing.Size(900, 600);
...
}