Попробуйте сначала вызвать InitializeComponent()
, затем добавить любые операторы, которые изменяют атрибуты/свойства формы. В противном случае сгенерированный дизайнером код может отменить любые изменения, внесенные вами ранее.
Во-вторых, Form.Size
не передает размер формы в развернутом состоянии. Вместо этого вы могли бы перебрать
System.Windows.Forms.Screen.AllScreens
затем получите фактический размер экрана по строкам
System.Windows.Forms.Screen.AllScreens.First().WorkingArea.Size;
и назначьте его this.Size
;
Другая проблема заключается в том, что как только вы назначаете это this.MaximizeBox = false
, Winforms запрещает WindowState
быть FormWindowState.Maximized
. Это явно "по замыслу". То, что вы, вероятно, хотите здесь, это использовать
this.FormBorderStyle = FormBorderStyle.None;
который не только удаляет кнопки максимума и минимума, но и кнопку закрытия. Если вам нужна такая кнопка, подумайте о том, чтобы добавить в окно собственную кнопку закрытия.
Все это вместе дает
InitializeComponent();
this.WindowState = FormWindowState.Maximized;
this.FormBorderStyle = FormBorderStyle.None;
this.Size = System.Windows.Forms.Screen.AllScreens.First().WorkingArea.Size;
this.MinimumSize = this.Size;
this.MaximumSize = this.Size;
Но: вы уверены, что это хорошая идея, что вы там пытаетесь? Как это будет вести себя, например, на машине с двумя мониторами разного разрешения? Это может быть нормально для программы, которая использует определенное оборудование и работает как специальное программное обеспечение, которое берет на себя исключительно управление машиной (что-то вроде Режим киоска). Обратите внимание, что окно по-прежнему можно перемещать с помощью определенных Win-<Key>
сочетаний клавиш.
person
Doc Brown
schedule
22.11.2019