Как предотвратить максимизацию формы состояния в C#

Я создал форму и установил ее FormBorderStyle собственность на none, когда я нажимаю Windows + UP форма будет максимизирована. Как я могу предотвратить максимизацию формы? Я старался

private void logIn_Resize(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Normal;
        }

но это не то, что я хочу. с кодом выше, когда я нажимаю Windows + Up форма будет максимизирована, а затем восстанавливается до нормального состояния. но я хочу предотвратить это в принципе.

2 ответа

Решение

Установки формы MaximizeBox в False должно быть достаточно, чтобы остановить эту функцию Aero Snap. Но Form.CreateParams вычисляет неправильные флаги стиля по какой-то загадочной причине. Я не могу пошагово сделать это сейчас из-за обновления 4.7.1 и не вижу ошибки в исходном коде. Это может быть связано с отключением его в системном меню, но не с флагами стилей, просто предположение.

В любом случае, с силой отбивая флаг родного стиля, проблема решается. Скопируйте и вставьте этот код в свой класс формы:

protected override CreateParams CreateParams {
    get {
        const int WS_MAXIMIZEBOX = 0x00010000;
        var cp = base.CreateParams;
        cp.Style &= ~WS_MAXIMIZEBOX;
        return cp;
    }
}
// Define the border style of the form to a dialog box.
form1.FormBorderStyle = FormBorderStyle.FixedDialog;

// Set the MaximizeBox to false to remove the maximize box.
form1.MaximizeBox = false;

// Set the MinimizeBox to false to remove the minimize box.
form1.MinimizeBox = false;

Кредит Как отключить изменение размера формы для пользователей?

Другие вопросы по тегам