Размер формы 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);
    ...
}
Другие вопросы по тегам