- Практическое руководство. Изменение размера формы в Windows Forms How to: Resize Windows Forms
- Программное изменение размера формы Resize a form programmatically
- Программное изменение ширины и высоты формы Change form width and height programmatically
- Изменение размера формы с помощью приращений программными средствами Change form size by increments programmatically
- Настройка размера и масштаба Windows Forms Adjusting the size and scale of Windows Forms
- в этом разделе In This Section
- Справочник Reference
- Связанные разделы Related sections
- Form. Resize Begin Событие
- Определение
- Тип события
- Примеры
- Комментарии
- Автоматическое масштабирование (Windows Forms .NET) Automatic scaling (Windows Forms .NET)
- Потребность в автоматическом масштабировании Need for automatic scaling
- Автоматическое масштабирование в действии Automatic scaling in action
Практическое руководство. Изменение размера формы в Windows Forms How to: Resize Windows Forms
Размер формы Windows Forms можно указать несколькими способами. You can specify the size of your Windows Form in several ways. Вы можете изменить высоту и ширину формы программными средствами, задав новое значение для свойства Size или изменив свойства Height или Width по отдельности. You can change both the height and the width of the form programmatically by setting a new value for the Size property, or adjust the Height or Width properties individually. Если вы используете Visual Studio, можно изменить размер с помощью конструктор Windows Forms. If you’re using Visual Studio, you can change the size using the Windows Forms Designer. См. также руководство. изменение размера Windows Forms с помощью конструктора. Also see How to: Resize Windows Forms Using the Designer.
Программное изменение размера формы Resize a form programmatically
Чтобы определить размер формы во время выполнения, задайте свойство Size формы. Define the size of a form at run time by setting the Size property of the form.
В примере кода ниже размер формы устанавливается равным 100 × 100 пикселей. The following code example shows the form size set to 100 × 100 pixels.
Программное изменение ширины и высоты формы Change form width and height programmatically
Определив свойство Size, измените высоту или ширину формы с помощью свойств Width или Height. After the Size is defined, change either the form height or width by using the Width or Height properties.
В примере кода ниже для ширины формы устанавливается значение 300 пикселей, отсчитываемое от левого края формы. Высота остается неизменной. The following code example shows the width of the form set to 300 pixels from the left edge of the form, whereas the height stays constant.
Измените Width или Height, задав свойство Size. Change Width or Height by setting the Size property.
Однако в примере ниже показано, что этот подход является более громоздким, чем просто задание свойств Width или Height. However, as the following code example shows, this approach is more cumbersome than just setting Width or Height properties.
Изменение размера формы с помощью приращений программными средствами Change form size by increments programmatically
Для увеличения размера формы задайте свойства Width или Height. To increment the size of the form, set the Width and Height properties.
В примере ниже ширина формы увеличивается на 200 пикселей по сравнению с первоначальным значением. The following code example shows the width of the form set to 200 pixels wider than the current setting.
Всегда используйте свойство Height или Width для изменения размеров формы, если вы не устанавливаете значения высоты и ширины одновременно, присваивая свойству Size новую структуру Size. Always use the Height or Width property to change a dimension of a form, unless you are setting both height and width dimensions at the same time by setting the Size property to a new Size structure. Свойство Size возвращает структуру Size, которая является типом значения. The Size property returns a Size structure, which is a value type. Присвоить новое значение свойству типа значения нельзя. You cannot assign a new value to the property of a value type. Поэтому приведенный ниже пример кода компилироваться не будет. Therefore, the following code example will not compile.
Настройка размера и масштаба Windows Forms Adjusting the size and scale of Windows Forms
Этот раздел содержит ссылки на информацию об изменении размера формы Windows Forms. This topic provides links to information about resizing Windows Forms.
в этом разделе In This Section
Практическое руководство. Изменение размера формы в Windows Forms How to: Resize Windows Forms
Инструкции по указанию размера формы Windows Forms. Provides instructions for specifying the size of Windows Forms.
Автоматическое масштабирование в Windows Forms Automatic Scaling in Windows Forms
Описывается, как автоматическое масштабирование обеспечивает корректное отображение формы и ее элементов управления на разных компьютерах. Discusses how automatic scaling enables a form and its controls to be displayed appropriately between machines.
Поддержка высокого DPI в Windows Forms Обсуждается поддержка Windows Forms «для высокого DPI и динамического масштабирования. High DPI Support in Windows Forms Discusses Windows Forms’ support for High DPI and dynamic scaling.
Справочник Reference
Size
Описывает данный класс и предоставляет ссылки на все его члены. Describes this class and has links to all of its members.
TableLayoutPanel
Описывает данный класс и предоставляет ссылки на все его члены. Describes this class and has links to all of its members.
FlowLayoutPanel
Описывает данный класс и предоставляет ссылки на все его члены. Describes this class and has links to all of its members.
Связанные разделы Related sections
Изменение внешнего вида Windows Forms Changing the appearance of Windows Forms
Ссылки на разделы, в которых описываются другие способы изменения внешнего вида форм Windows Forms. Provides links to topics describing other ways to change the appearance of Windows Forms.
Form. Resize Begin Событие
Определение
Происходит, когда форма входит в режим изменения размеров. Occurs when a form enters resizing mode.
Тип события
Примеры
В следующем примере демонстрируется использование этого элемента. The following example demonstrates the use of this member. В этом примере обработчик событий сообщает о возникновении ResizeBegin события. In the example, an event handler reports on the occurrence of the ResizeBegin event. Этот отчет поможет вам узнать, когда происходит событие и может помочь при отладке. This report helps you to learn when the event occurs and can assist you in debugging. Чтобы сообщить о нескольких событиях или о событиях, которые происходят часто, рассмотрите возможность замены MessageBox.Show Console.WriteLine или добавления сообщения в многострочный TextBox . To report on multiple events or on events that occur frequently, consider replacing MessageBox.Show with Console.WriteLine or appending the message to a multiline TextBox.
Чтобы выполнить пример кода, вставьте его в проект, содержащий экземпляр типа Form с именем Form1 . To run the example code, paste it into a project that contains an instance of type Form named Form1 . Затем убедитесь, что обработчик событий связан с ResizeBegin событием. Then ensure that the event handler is associated with the ResizeBegin event.
Комментарии
ResizeBeginСобытие возникает, когда пользователь начинает изменять размер формы, обычно нажимая и перетаскивая одну из границ или захват изменения размера, расположенный в правом нижнем углу формы. The ResizeBegin event is raised when the user begins to resize a form, typically by clicking and dragging one of the borders or the sizing grip located on the lower-right corner of the form. Это действие помещает форму в цикл модального изменения размера до завершения операции изменения размера. This action puts the form into a modal sizing loop until the resize operation is completed. Как правило, во время операции изменения размера возникает следующий набор событий: Typically, the following set of events occurs during a resize operation:
Одно ResizeBegin событие возникает, когда форма переходит в режим изменения размера. A single ResizeBegin event occurs as the form enters resizing mode.
Resize SizeChanged При изменении формы возникает ноль или более пар событий и Size . Zero or more pairs of Resize and SizeChanged events occur as the form’s Size is modified.
Одно ResizeEnd событие возникает, когда форма выходит из режима изменения размера. A single ResizeEnd event occurs as the form exits resizing mode.
Просто щелкнув границу или захват изменения размера, вы создадите ResizeBegin ResizeEnd события и без каких-либо промежуточных Resize пар и SizeChanged событий. Just clicking without dragging on a border or resizing grip will generate the ResizeBegin and ResizeEnd events without any intermediate Resize and SizeChanged event pairs.
ResizeBegin ResizeEnd Пара событий и вызывается также при перемещении формы пользователем, обычно путем щелчка и перетаскивания в строке заголовка. The ResizeBegin and ResizeEnd pair of events is also raised when the user moves the form, typically by clicking and dragging on the caption bar. Эти события не создаются программной манипуляцией с формой, например путем изменения Size Location свойств или. These events are not generated by programmatic manipulation of the form, for example by changing the Size or Location properties.
Дополнительные сведения об обработке событий см. в разделе обработка и вызов событий. For more information about handling events, see Handling and Raising Events.
Автоматическое масштабирование (Windows Forms .NET) Automatic scaling (Windows Forms .NET)
Автоматическое масштабирование позволяет форме и ее элементам управления, разработанным на одном компьютере с использованием определенного разрешения или шрифтов, правильно отображаться на другом компьютере с другим разрешением или шрифтом. Automatic scaling enables a form and its controls, designed on one machine with a certain display resolution or font, to be displayed appropriately on another machine with a different display resolution or font. Оно гарантирует, что размеры формы и ее элементов управления будут изменяться автоматически в соответствии с приложениями Windows и другими приложениями на компьютерах пользователя и разработчика. It assures that the form and its controls will intelligently resize to be consistent with native windows and other applications on both the users’ and other developers’ machines. Автоматическое масштабирование и стили оформления позволяют приложениям Windows Forms сохранять согласованный внешний вид и поведение на различных компьютерах пользователей, так же как в случае с обычными приложениями Windows. Automatic scaling and visual styles enable Windows Forms applications to maintain a consistent look-and-feel when compared to native Windows applications on each user’s machine.
В большинстве случаев автоматическое масштабирование работает должным образом в Windows Forms. For the most part, automatic scaling works as expected in Windows Forms. Однако внесение изменений в схему шрифтов может быть проблематичным. However, font scheme changes can be problematic.
Документация для Руководства по рабочему столу по .NET 5 (и .NET Core) находится в разработке. The Desktop Guide documentation for .NET 5 (and .NET Core) is under construction.
Потребность в автоматическом масштабировании Need for automatic scaling
Без автоматического масштабирования приложения, разработанные для определенного разрешения экрана или шрифта, будут выглядеть либо слишком маленькими, либо слишком большими при изменении разрешения или шрифта. Without automatic scaling, an application designed for one display resolution or font will either appear too small or too large when that resolution or font is changed. Например, если приложение разработано с использованием базового шрифта Tahoma размером 9 пунктов, то без коррекции оно будет выглядеть слишком маленьким при запуске на компьютере, на котором в качестве системного шрифта используется Tahoma размером 12 пунктов. For example, if the application is designed using Tahoma 9 point as a baseline, without adjustment it will appear too small if run on a machine where the system font is Tahoma 12 point. Текстовые элементы, такие как заголовки, меню, содержимое текстовых полей и т. д., будут меньше, чем в других приложениях. Text elements, such as titles, menus, text box contents, and so on will render smaller than other applications. Более того, размер содержащих текст элементов пользовательского интерфейса, таких как строки заголовков, меню и т. д., зависит от используемого шрифта. Furthermore, the size of user interface (UI) elements that contain text, such as the title bar, menus, and many controls are dependent on the font used. В рассматриваемом примере эти элементы также будут выглядеть относительно меньше. In this example, these elements will also appear relatively smaller.
Аналогичная ситуация возникает, когда приложение разработано для определенного разрешения экрана. An analogous situation occurs when an application is designed for a certain display resolution. Наиболее распространенное разрешение экрана — 96 точек на дюйм (DPI), что соответствует 100 % масштабирования экрана, однако все более распространенными становятся более высокие разрешения, включая 125 %, 150 %, 200 % (что соответствует 120, 144 и 192 DPI) и выше. The most common display resolution is 96 dots per inch (DPI), which equals 100% display scaling, but higher resolution displays supporting 125%, 150%, 200% (which respectively equal 120, 144 and 192 DPI) and above are becoming more common. Без коррекции приложение, особенно графическое, разработанное для одного разрешения, будет отображаться либо слишком большим, либо слишком маленьким при запуске с другим разрешением. Without adjustment, an application, especially a graphics-based one, designed for one resolution will appear either too large or too small when run at another resolution.
Автоматическое масштабирование предназначено для решения таких проблем путем автоматического изменения размеров формы и ее дочерних элементов управления согласно относительному размеру шрифтов и разрешению экрана. Automatic scaling seeks to address these problems by automatically resizing the form and its child controls according to the relative font size or display resolution. Операционная система Windows поддерживает автоматическое масштабирование диалоговых окон с помощью относительной единицы измерения, называемой единицей размера диалогового окна. The Windows operating system supports automatic scaling of dialog boxes using a relative unit of measurement called dialog units. Единица размера диалогового окна основана на системном шрифте, а ее связь с пикселями можно определить с помощью функции GetDialogBaseUnits пакета Win32 SDK. A dialog unit is based on the system font and its relationship to pixels can be determined though the Win32 SDK function GetDialogBaseUnits . При изменении темы, используемой Windows, все диалоговые окна автоматически настраиваются соответствующим образом. When a user changes the theme used by Windows, all dialog boxes are automatically adjusted accordingly. Кроме того, в Windows Forms поддерживается автоматическое масштабирование в соответствии со стандартным системным шрифтом или разрешением экрана. In addition, Windows Forms supports automatic scaling either according to the default system font or the display resolution. При необходимости автоматическое масштабирование можно отключить в приложении. Optionally, automatic scaling can be disabled in an application.
Произвольные сочетания режимов масштабирования на основе разрешения экрана и размера шрифта не поддерживаются. Arbitrary mixtures of DPI and font scaling modes are not supported. Вы без всяких проблем можете масштабировать пользовательский элемент управления в одном режиме (например, на основе разрешения экрана) и поместить его в форму с помощью другого режима (на основе размера шрифта), но использование базовой формы в одном режиме и производной формы в другом может привести к непредвиденным результатам. Although you may scale a user control using one mode (for example, DPI) and place it on a form using another mode (Font) with no issues, but mixing a base form in one mode and a derived form in another can lead to unexpected results.
Автоматическое масштабирование в действии Automatic scaling in action
В Windows Forms для автоматического масштабирования формы и ее содержимого используется описанная ниже логика. Windows Forms uses the following logic to automatically scale forms and their contents:
Во время разработки каждый объект ContainerControl регистрирует режим масштабирования и его текущее разрешение в свойствах AutoScaleMode и AutoScaleDimensions соответственно. At design time, each ContainerControl records the scaling mode and it current resolution in the AutoScaleMode and AutoScaleDimensions, respectively.
Во время выполнения фактическое разрешение хранится в свойстве CurrentAutoScaleDimensions. At run time, the actual resolution is stored in the CurrentAutoScaleDimensions property. Свойство AutoScaleFactor динамически вычисляет отношение между разрешением во время выполнения и разрешением во время разработки. The AutoScaleFactor property dynamically calculates the ratio between the run-time and design-time scaling resolution.
Если при загрузке формы значения CurrentAutoScaleDimensions и AutoScaleDimensions различны, то для масштабирования элемента управления и его дочерних элементов вызывается метод PerformAutoScale. When the form loads, if the values of CurrentAutoScaleDimensions and AutoScaleDimensions are different, then the PerformAutoScale method is called to scale the control and its children. Этот метод приостанавливает размещение и вызывает метод Scale для выполнения фактического масштабирования. This method suspends layout and calls the Scale method to perform the actual scaling. Впоследствии значение AutoScaleDimensions обновляется во избежание прогрессивного масштабирования. Afterwards, the value of AutoScaleDimensions is updated to avoid progressive scaling.
Метод PerformAutoScale также вызывается автоматически в перечисленных ниже ситуациях. PerformAutoScale is also automatically invoked in the following situations:
В ответ на событие OnFontChanged, если используется режим масштабирования Font. In response to the OnFontChanged event if the scaling mode is Font.
Если при возобновлении размещения элементов управления внутри контейнера обнаруживается изменение свойства AutoScaleDimensions или AutoScaleMode. When the layout of the container control resumes and a change is detected in the AutoScaleDimensions or AutoScaleMode properties.
При масштабировании родительского объекта ContainerControl, как указанно выше. As implied above, when a parent ContainerControl is being scaled. Каждый контейнерный элемент управления отвечает за масштабирование своих дочерних элементов с помощью своих собственных коэффициентов масштабирования, а не коэффициентов его родительского контейнера. Each container control is responsible for scaling its children using its own scaling factors and not the one from its parent container.
Поведение дочерних элементов управления при масштабировании может изменяться несколькими способами. Child controls can modify their scaling behavior through several means:
Можно переопределить свойство ScaleChildren, чтобы указать, следует ли масштабировать дочерние элементы управления. The ScaleChildren property can be overridden to determine if their child controls should be scaled or not.
Можно переопределить метод GetScaledBounds для корректировки границ, до которых масштабируется элемент управления, но не логики масштабирования. The GetScaledBounds method can be overridden to adjust the bounds that the control is scaled to, but not the scaling logic.
Можно переопределить метод ScaleControl для изменения логики масштабирования текущего элемента управления. The ScaleControl method can be overridden to change the scaling logic for the current control.