Windows forms запретить изменение размера формы
При создании формы размер и расположение изначально задаются как значения по умолчанию. Размер формы по умолчанию обычно имеет ширину и высоту 800 x 500 пикселей. Начальное расположение, отображаемое при отображении формы, зависит от нескольких различных параметров.
Изменить размер формы можно во время разработки с помощью Visual Studio, а также во время выполнения с помощью кода.
Изменение размера с помощью конструктора
После добавления новой формы в проект размер формы задается двумя разными способами. Во-первых, для него можно задать маркеры изменения размера в конструкторе. Перетаскивая правый край, нижний край или угол, можно изменить размер формы.
Второй способ изменения размера формы — в конструкторе на панели "Свойства". Выберите форму, а затем найдите панель Свойства в Visual Studio. Прокрутите вниз до раздела Размер и разверните его. Можно вручную задать параметры Ширина и Высота.
Изменение размера в коде
Несмотря на то, что начальный размер формы задается в конструкторе, его можно изменить с помощью кода. Использование кода для изменения размера формы полезно, когда в каком-либо приложении размера формы по умолчанию недостаточно.
Чтобы изменить размер формы, измените свойство Size, которое представляет ширину и высоту формы.
Изменение размера текущей формы
Размер текущей формы можно изменить, пока код выполняется в контексте формы. Например, если имеется Form1 с кнопкой, то при нажатии на нее вызывается обработчик событий Click для изменения размера формы:
Изменение размера другой формы
Размер другой формы можно изменить после ее создания с помощью переменной, ссылающейся на форму. Например, предположим, что у вас есть две формы: Form1 (начальная форма в этом примере) и Form2 . В Form1 имеется кнопка, которая при нажатии вызывает событие Click . Обработчик этого события создает новый экземпляр формы Form2 , задает размер, а затем отображает его:
Если свойство Size не задано вручную, размер формы по умолчанию — это размер, заданный во время разработки.
Расположение с помощью конструктора
При создании и отображении экземпляра формы начальное расположение формы определяется свойством StartPosition. Свойство Location содержит текущее положение в форме. Оба свойства можно задать с помощью конструктора.
Перечисление FormStartPosition | Описание |
---|---|
CenterParent | Форма располагается в центре родительской формы. |
CenterScreen | Форма располагается по центру текущего экрана. |
Вручную | Положение формы определяется свойством Расположение. |
WindowsDefaultBounds | Форма размещается в расположении Windows по умолчанию и ее размер подгоняется под размер по умолчанию, который определен Windows. |
WindowsDefaultLocation | Форма размещается в расположении Windows по умолчанию и не изменяется. |
Значение CenterParent работает только с формами, которые являются либо дочерними формами многодокументного интерфейса (MDI), либо обычными формами, отображаемыми с помощью метода ShowDialog. CenterParent не влияет на обычную форму, которая отображается с помощью метода Show. Чтобы разместить форму по центру (переменная form ) другой формы (переменная parentForm ), используйте следующий код:
Расположение с помощью кода
Несмотря на то, что для задания начального расположения формы можно использовать конструктор, изменить режим начальной позиции или задать расположение вручную можно с помощью кода. Использование кода для расположения формы полезно, если необходимо вручную разместить форму и изменить ее размер относительно экрана или других форм.
Перемещение текущей формы
Переместить текущую форму можно, пока код выполняется в контексте формы. Например, если имеется Form1 с кнопкой, то при нажатии на нее вызывается обработчик событий Click . Обработчик в этом примере изменяет расположение формы на верхнюю левую часть экрана путем задания свойства Location:
Расположение другой формы
Расположение другой формы можно изменить после ее создания с помощью переменной, ссылающейся на форму. Например, предположим, что у вас есть две формы: Form1 (начальная форма в этом примере) и Form2 . В Form1 имеется кнопка, которая при нажатии вызывает событие Click . Обработчик этого события создает новый экземпляр формы Form2 и задает ее размер:
Если свойство Size не задано, размер формы по умолчанию — это размер, заданный во время разработки.
Форма является основным компонентом графического интерфейса программы. Именно на ней размещаются управляющие интерфейсы.
Рассмотрим некоторые из свойств формы, которые влияют на её внешний вид.
Объявляем форму
Для того что бы объявить форму, нам надо добавить библиотеку System.Windows.Forms.dll
После объявляем форму $main_form
Отобразим форму $main_form.
В результате получилась вот такая форма:
Что бы в загаловке формы отобразить текст нужно присвоить его свойству Text нашей формы:
Текст отобразится в заголовке:
Изменение размера формы:
Давайте изменим размер формы.
Это можно сделать через свойства Width(ширина) и Height(высота) формы, где значения параметров это кол-во пикселей.
Этого же результата можно добиться используя параметр формы Size:
$main_form . Size = New-object System . Drawing . Size ( 300 , 500 )Так же можно задать размер с помощью параметра DesktopBounds:
$main_form . DesktopBounds = New-object System . Drawing . Rectangle ( 0 , 0 , 300 , 500 )Так же для изменения размеров можно воспользоваться свойством ClientSize
$main_form . ClientSize = New-object System . Drawing . Size ( 300 , 500 )Однако этот параметр задаёт клиентскую область формы, которая по размерам меньше самой формы. Поэтом получившаяся форма, по размерам окажется больше, чем в предыдущих примерах.
Однако данные свойства не ограничивают размер формы в период жизни программы, пользователь может изменить размер формы или распахнуть её на весь экран, что может существенно сказаться на внешнем виде формы. Поэтому иногда форму приходится ограничить возможность сжимать и/или растягивать форму.
Для этогу существуют такие параметры , как MinimumSize(минимальный размер формы) и MaximumSize (максимальный размер формы). Если задать эти параметры, то в период жизни форма не сможет за них выйти.
Пример объявления данных свойств:
Но вычислять область окна бывает довольно сложно, удобнее всего отдать эту задачу автоматическим средствам управления окнами.
Для этого с начала надо разрешить менять размер формы, в зависимости от расположения объектов в области видимости свойством AutoSize перевести его в значение true
После надо выбрать режим автоматического подбора размера формы и указать его в свойстве AutoSizeMode. Существует два режима этого свойства GrowOnly и GrowAndShrink:
$main_form . AutoSizeMode = [ System . Windows . Forms . AutoSizeMode ] : : GrowOnly $main_form . AutoSizeMode = [ System . Windows . Forms . AutoSizeMode ] : : GrowAndShrinkШрифты
Так же не малую роль в отображении формы влияют шрифты. К тому же настройки шрифтов наследуются на управляющие элементы принадлежащие этой форме.
Настройки шрифта хранятся в свойстве формы Font данное свойство наследуется другим упавляющим компонентам на форме. Изменять свойства Font по отдельности нельзя, но можно переопределить его польностью следующим образом:
$main_form . Font = New-Object System . Drawing . Font ( "Calibri" , 24 )Что бы поменять цвет шрифта существует следующее свойство ForeColor:
Не малуюроль в определении размеров управляющих элементов играет размер шрифта его можно узнать из свойства AutoScaleBaseSize, его так же можно перераспределить.
Шаблон окна
Шаблон окна формы опредиляется парметром FormBorderStyle, который может принимать семь значений Fixed3D, FixedDialog, FixedSingle, FixedToolWindow, None, Sizabl, SizableToolWindow по умолчанию стоит значение Sizable. Заметим, что внешний вид формы на примерах может существенно отличаться на разных компьютерах и существенно зависит от OC. Так же после назначения определённого шаблона окна в дальнейшем его можно будет редактировать другими свойствами формы.
Рассмотрим шаблоны формы:
$main_form . FormBorderStyle = [ System . Windows . Forms . FormBorderStyle ] : : Fixed3DУправляющие кнопки
Для управления отображения управляющими кнопками используются следующие свойства ControlBox, MaximizeBox и MinimizeBox.
Свойство ControlBox управляет видимостью всей областью управляющих кнопок. По умолчанию она находиться в состоянии true.
Зададим данному свойству значение false
Если в форме свойству Text присвоить пустое значение, то шапка формы совсем исчезнет.
Вот так будет выглядеть форма:
Включим назад ControlBox и рассмотрим следующие свойства: MaximizeBox и MinimizeBox. Они тоже булевые и служат для того, что бы выключать кнопки развернуть окно и свернуть окно. По умолчанию они имеют свойство true. Рассмотрим как выглядит их выключение:
Однако, если выключить и MaximizeBox и MinimizeBox кнопки перестают быть видимыми:
Заметим так же, что отключение кнопок по одиночке или одновременно влияет не только на отображение этих кнопок и возможностями их использовать, но так же и на свойство формы. Так на форме с выключенным свойством MaximizeBox пользователю отключаются все стандартные возможности распахнуть форму на весь экран. Так же дела обстоят и с MinimizeBox.
Иконка.
Иконка отображаемая в левом верхнем углу формы, а так же отображаемая в панели задач может определить через свойство формы Icon например вот так:
$main_form . Icon = New-Object System . Drawing . Icon ( "d:\favicon.ico" )
Если же мы не хотим, что бы иконка отображалась, то её можно скрыть, с помощью свойства ShowIcon установив его в состояние false. Если же шаблон окна не подразумевает наличия иконки, её так же можно включить через это свойство установи параметр truе
Элемент захвата
Для того, чтобы задать видимость захвата для изменения размера, отображаемого в правом нижнем углу формы. Нужно воспользоваться свойством SizeGripStyle. Оно имеет 3 значенич Auto, Hide, Show
Данное значение стоит по умолчанию. Форма сама решает отображать этот элемент или нет.
Элемент будет скрыт с формы.
$main_form . SizeGripStyle = [ System . Windows . Forms . SizeGripStyle ] : : Hideэлемент отображается на форме
$main_form . SizeGripStyle = [ System . Windows . Forms . SizeGripStyle ] : : ShowЦвет и прозрачность.
Что бы задасть цвет формы нужно воспользоваться свойством BackColor, этот параметр будет наследоваться размещённым на данной форме управляющим элементам. Сделаем цвет рабочей области, например синим:
А в свойстве TransparencyKey формы мы должны указать, какой цвет будет заменяться на прозрачный.
Эти параметры прозрачности будут так же наследоваться на управляющие элементы формы.
Это свойство можно использовать для рисования не стандартных окон убрав перед этим рамку формы
$main_form . FormBorderStyle = [ System . Windows . Forms . FormBorderStyle ] : : NoneЕсли же мы не хотим делать дырки в форме, а всеволишь сделать её слегка прозрачной, мы можем воспользоваться свойством Opacity, значения в ней колеблятся от 0 это полностью прозрачная до 1, не прозрачная.
Курсор
Для изменения вида курсора в приложении можно воспользоваться свойством формы Cursor:
$main_form . Cursor = New-Object System . Windows . Forms . Cursor ( "d:\Cursor.cur" )Так же можно узнать перехватывается ли курсор приложением в даннй момент, для этого нужно посмотреть данные свойства формы Capture
Что бы уведомить пользователя о текущем процессе, можно так же включить курсор ожидания указав в свойстве UseWaitCursor значение true
Состояние окна.
Что бы узнать в каком состоянии находиться окно или изменить его, можно воспользоваться свойством формы WindowState оно принимает три значения Maximized, Minimized, Normal.
Что бы развернуть окно:
$main_form . WindowState = [ System . Windows . Forms . FormWindowState ] : : MaximizedСвернуть в панель задач:
Перевести в обычный(свободный) режим:
$main_form . WindowState = [ System . Windows . Forms . FormWindowState ] : : NormalЗеркальный вид окна
Так же есть возможность показать зеркальную форму обычно это используют для приложений в которых ввод текста происходит с права на лево.
Для этого нам нужно сначала включить поддержку ввода текста с права на лево свойством формы RightToLeft
$main_form . RightToLeft = [ System . Windows . Forms . RightToLeft ] : : YESТолько после этого можно отобразить форму зеркально установив свойство формы RightToLeftLayout в значение true
Посмотреть отображается ли форма в зеркальном виде можно из свойства формы IsMirrored.
Отображение в Панели задач.
Видимость окна.
Так же если надо сделать, что бы форма не закрывалась другими окнами можно воспользоваться свойством TopMost. Если установить его в значение true то другие окна не смогут заслонить его.
Для формы существуют параметры видимости, но для отображения формы лучше пользоваться функция Enabled если установить его в значение false, то его не удасться отобразить методом ShowDialog().
Так же если надо скрыть форму, то это можно сделать изменив свойство Visible на false. Можно так же отобразить форму, но это может быть не всегда хорошей идеей, лучше пользоваться методом ShowDialog.
Комментарии:
Комментарии 12
Огромное спасибо за подробный разбор!
Очень сильно помогло в пониманиии концепции построения GUI для повершела =)
Приятно осознавать, что мой блог помогает людям. 🙂
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
Растянуть элементы на форме Windows Forms
Создадим в Visual Studio проект Windows Forms и разместим на форме следующие элементы управления:
Запустим программу и с помощью мыши попробуем увеличить размеры окна, потянув правый нижний угол формы. В результате получим следующее:
Видим, что окно формы увеличилось в размере, но элементы управления никак не реагируют на данные изменения.
Теперь покажем, как создать адаптивный к изменениям размера окна интерфейс на форме Windows Forms.
Как растянуть элементы на форме Windows Forms
В Windows Forms свойство Anchor определяет стороны контейнера (Top, Bottom, Left, Right) к которым привязывается элемент управления. При изменении размера контейнера расстояние между указанной стороной контейнера и ближайшей к ней стороне элемента управления остаётся неизменным.
Таким образом можно добиться растягивания и перемещения элементов в форме при изменении её размера.
В нашем случае контейнером для элементов управления является всё окно.
Зададим для TextBox значение атрибута Anchor = Top, Left, Right. Теперь расстояние между соответствующими сторонами ТекстБокса и окна будет неизменным. Так мы добьёмся изменения ширины контрола при изменении ширины окна.
Для RichTextBox значение свойства Anchor сделаем равным Top, Bottom, Left, Right.
У кнопки Button установим Anchor, как Top, Right.
Теперь запустим программу и изменим размер окна: увидим, что элементы управления на форме растягиваются и меняют своё местоположение. Теперь интерфейс стал адаптированным к изменению размера окна.
Чтобы решить данную проблему, необходимо указать минимальный размер формы Windows Form в пикселях. Тем самым форму будет невозможно сделать меньше установленного размера.
Щёлкнем по форме и в окне свойств изменим параметр MinimunSize. Установим его равным текущему размеру формы в визуальном редакторе (Size).
Читайте также: