Winforms - отключить, что когда пользователь перетаскивает форму за границу, чтобы переместить ее, он изменяет размер формы.

У меня есть проект Winforms с максимизированной формой (this.WindowState = System.Windows.Forms.FormWindowState.Maximized). Когда пользователь перетаскивает форму за ее границу, чтобы переместить форму, ее размер изменяется до размера, который я установил (который не является максимальным размером экрана, поскольку я точно не знаю, какие значения установить для свойства MinimumSize, чтобы оно было максимизируется на каждом экране).

Я не хочу такого поведения. Я просто хочу, чтобы форма оставалась максимальной. Я установил FormBorderStyle на FixedDialog, чтобы пользователь не мог изменить размер формы, перетаскивая границы. Я пытался переустановить максимальное состояние окна во всех видах событий, но они, похоже, не работают.

Кто-нибудь знает, как это исправить?


person Marthe Veldhuis    schedule 26.10.2016    source источник
comment
Непонятно, какая у вас цель. Можно подробнее? Вы хотите запретить пользователю перемещать форму? Вы хотите предотвратить изменение размера? Вы хотите установить минимальный размер для размера рабочего стола?   -  person Reza Aghaei    schedule 26.10.2016
comment
Цель, которую я пытаюсь достичь, - не допустить, чтобы форма стала не максимизированной. Как это достигается - запретив пользователю перемещать форму, установив минимальный размер - мне все равно.   -  person Marthe Veldhuis    schedule 26.10.2016
comment
Как предотвратить перемещение окон?   -  person Reza Aghaei    schedule 26.10.2016
comment
Размер развернутой формы нельзя изменить или перетащить мышью, поэтому неясно, как это стало для вас проблемой. Опубликуйте код, который дублирует проблему для нас.   -  person LarsTech    schedule 26.10.2016
comment
@LarsTech Это странная часть, потому что именно это и произошло. Я до сих пор не знаю, что вызвало это, потому что я изменил свою реализацию, но я рад, что покончил с этим; p.   -  person Marthe Veldhuis    schedule 05.01.2017


Ответы (2)


Это может помочь вам

this.MinimumSize = this.MaximumSize;
this.SizeGripStyle = SizeGripStyle.Hide;

а еще можно попробовать написать onResize событие вида

this.WindowState = System.Windows.Forms.FormWindowState.Maximized

Измените FormBorderStyle на одно из фиксированных значений: FixedSingle, Fixed3D, FixedDialog или FixedToolBar.

// Define the border style of the form to a dialog box.
this.FormBorderStyle = FormBorderStyle.FixedDialog;

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

// Set the MinimizeBox to false to remove the minimize box.
this.MinimizeBox = false;
person Mohit Shrivastava    schedule 26.10.2016
comment
Для FormBorderStyle уже установлено значение FixedDialog, и я добавил строку this.MinimumSize = this.MaximumSize. К сожалению, это не помогает. - person Marthe Veldhuis; 26.10.2016
comment
Это не помогает мне, так как это вопрос о перемещении формы, вызывающем изменение ее размера, а не о том, что пользователь может изменить ее размер, перетаскивая стороны формы. - person Marthe Veldhuis; 26.10.2016
comment
FormBorderStyle не содержит определения для FixedToolBar. - person Ignatius; 14.07.2017

Ты пробовал

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

в комбинации с

this.WindowState = System.Windows.Forms.FormWindowState.Maximized

Когда вы установите это, вы не сможете перетаскивать или изменять размер формы.

Однако вам нужно будет создать собственную кнопку закрытия или использовать «Alt+F4», чтобы закрыть окно.

person Gwen Royakkers    schedule 26.10.2016