Как предотвратить максимизацию формы состояния в 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;
Кредит Как отключить изменение размера формы для пользователей?