Как изменить размер формы в windows forms

Основные свойства форм в Windows Forms и Visual C#

Основные свойства форм

Последнее обновление: 31.10.2015

С помощью специального окна Properties (Свойства) справа Visual Studio предоставляет нам удобный интерфейс для управления свойствами элемента:

свойства форм в Windows Forms

Большинство этих свойств оказывает влияние на визуальное отображение формы. Пробежимся по основным свойствам:

  • Name: устанавливает имя формы — точнее имя класса, который наследуется от класса Form

  • BackColor: указывает на фоновый цвет формы. Щелкнув на это свойство, мы сможем выбрать тот цвет, который нам подходит
    из списка предложенных цветов или цветовой палитры

  • BackgroundImage: указывает на фоновое изображение формы

  • BackgroundImageLayout: определяет, как изображение, заданное в свойстве BackgroundImage, будет располагаться на форме.

  • ControlBox: указывает, отображается ли меню формы. В данном случае под меню понимается меню самого верхнего уровня, где
    находятся иконка приложения, заголовок формы, а также кнопки минимизации формы и крестик. Если данное свойство имеет значение false, то мы не увидим
    ни иконку, ни крестика, с помощью которого обычно закрывается форма

  • Cursor: определяет тип курсора, который используется на форме

  • Enabled: если данное свойство имеет значение false, то она не сможет получать ввод от пользователя, то есть мы не сможем
    нажать на кнопки, ввести текст в текстовые поля и т.д.

  • Font: задает шрифт для всей формы и всех помещенных на нее элементов управления. Однако, задав у элементов формы свой шрифт,
    мы можем тем самым переопределить его

  • ForeColor: цвет шрифта на форме

  • FormBorderStyle: указывает, как будет отображаться граница формы и строка заголовка. Устанавливая данное свойство в None
    можно создавать внешний вид приложения произвольной формы

  • HelpButton: указывает, отображается ли кнопка справки формы

  • Icon: задает иконку формы

  • Location: определяет положение по отношению к верхнему левому углу экрана, если для свойства StartPosition
    установлено значение Manual

  • MaximizeBox: указывает, будет ли доступна кнопка максимизации окна в заголовке формы

  • MinimizeBox: указывает, будет ли доступна кнопка минимизации окна

  • MaximumSize: задает максимальный размер формы

  • MinimumSize: задает минимальный размер формы

  • Opacity: задает прозрачность формы

  • Size: определяет начальный размер формы

  • StartPosition: указывает на начальную позицию, с которой форма появляется на экране

  • Text: определяет заголовок формы

  • TopMost: если данное свойство имеет значение true, то форма всегда будет находиться поверх других окон

  • Visible: видима ли форма, если мы хотим скрыть форму от пользователя, то можем задать данному свойству значение
    false

  • WindowState: указывает, в каком состоянии форма будет находиться при запуске: в нормальном, максимизированном или минимизированном

Программная настройка свойств

С помощью значений свойств в окне Свойства мы можем изменить по своему усмотрению внешний вид формы, но все то же самое мы можем сделать
динамически в коде. Перейдем к коду, для этого нажмем правой кнопкой мыши на форме и выберем в появившемся контекстном меню View Code (Просмотр кода). Перед нами открывается файл кода
Form1.cs. Изменим его следующим образом:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace HelloApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Text = "Hello World!";
            this.BackColor = Color.Aquamarine;
            this.Width = 250;
            this.Height = 250;
        }
    }
}

изменение свойств формы

В данном случае мы настроили несколько свойств отображения формы: заголовок, фоновый цвет, ширину и высоту.
При использовании конструктора формы надо учитывать, что весь остальной код должен идти после вызова метода InitializeComponent(), поэтому все установки свойств
здесь расположены после этого метода.

Установка размеров формы

Для установки размеров формы можно использовать такие свойства как Width/Height или Size. Width/Height принимают числовые значения, как в вышеприведенном
примере. При установке размеров через свойство Size, нам надо присвоить свойству объект типа Size:

this.Size = new Size(200,150);

Объект Size в свою очередь принимает в конструкторе числовые значения для установки ширины и высоты.

Начальное расположение формы

Начальное расположение формы устанавливается с помощью свойства StartPosition, которое может принимать одно из следующих значений:

  • Manual: Положение формы определяется свойством Location

  • CenterScreen: Положение формы в центре экрана

  • WindowsDefaultLocation: Позиция формы на экране задается системой Windows, а размер определяется свойством Size

  • WindowsDefaultBounds: Начальная позиция и размер формы на экране задается системой Windows

  • CenterParent: Положение формы устанавливается в центре родительского окна

Все эти значения содержатся в перечислении FormStartPosition, поэтому, чтобы, например, установить форму в центре экрана, нам надо прописать
так:

this.StartPosition = FormStartPosition.CenterScreen;

Фон и цвета формы

Чтобы установить цвет как фона формы, так и шрифта, нам надо использовать цветовое значение, хранящееся в структуре Color:

this.BackColor = Color.Aquamarine;
this.ForeColor = Color.Red;

Кроме того, мы можем в качестве фона задать изображение в свойстве BackgroundImage, выбрав его в окне свойств или в коде, указав путь к изображению:

this.BackgroundImage = Image.FromFile("C:\Users\Eugene\Pictures\3332.jpg");

Чтобы должным образом настроить нужное нам отображение фоновой картинки, надо использовать свойство BackgroundImageLayout,
которое может принимать одно из следующих значений:

  • None: Изображение помещается в верхнем левом углу формы и сохраняет свои первоначальные значения

  • Tile: Изображение располагается на форме в виде мозаики

  • Center: Изображение располагается по центру формы

  • Stretch: Изображение растягивается до размеров формы без сохранения пропорций

  • Zoom: Изображение растягивается до размеров формы с сохранением пропорций

Например, расположим форму по центру экрана:

 this.StartPosition = FormStartPosition.CenterScreen;

How can I change window form size at runtime?

I saw examples, but every one requires Form.Size property. This property can be set like here: http://msdn.microsoft.com/en-us/library/25w4thew.aspx#Y456,
but I’ve created my application form in a visual tool and the form is created like this:

static void Main()
{
    Application.Run(new Form());
}

How do I set that Size property now and then change it by the Form.Height and Form.Width methods?

Peter Mortensen's user avatar

asked Oct 25, 2012 at 8:14

bLAZ's user avatar

1

You cannot change the Width and Height properties of the Form as they are readonly. You can change the form’s size like this:

button1_Click(object sender, EventArgs e)
{
    // This will change the Form's Width and Height, respectively.
    this.Size = new Size(420, 200);
}

answered Oct 25, 2012 at 8:23

Arrow's user avatar

ArrowArrow

2,7048 gold badges37 silver badges60 bronze badges

4

If you want to manipulate the form programmatically the simplest solution is to keep a reference to it:

static Form myForm;

static void Main()
{
    myForm = new Form();
    Application.Run(myForm);
}

You can then use that to change the size (or what ever else you want to do) at run time. Though as Arrow points out you can’t set the Width and Height directly but have to set the Size property.

Community's user avatar

answered Oct 25, 2012 at 8:16

ChrisF's user avatar

ChrisFChrisF

133k31 gold badges255 silver badges324 bronze badges

In order to call this you will have to store a reference to your form and pass the reference to the run method. Then you can call this in an actionhandler.

public partial class Form1 : Form
{
    public void ChangeSize(int width, int height)
    {
        this.Size = new Size(width, height);
    }
}

answered Oct 25, 2012 at 8:16

MrFox's user avatar

MrFoxMrFox

4,7526 gold badges43 silver badges79 bronze badges

4

You can change the height of a form by doing the following where you want to change the size (substitute ’10’ for your size):

this.Height = 10;

This can be done with the width as well:

this.Width = 10;

answered Aug 12, 2016 at 11:51

Penge's user avatar

PengePenge

311 bronze badge

0

Try this.ClientSize instead of this.Size:

private void Form1_Load(object sender, EventArgs e)
{
   this.ClientSize = new Size(mywidth, myheight);
}

Worked for me.

answered Oct 6, 2021 at 17:42

CoderColor's user avatar

Something like this works fine for me:

public partial class Form1 : Form
{
    Form mainFormHandler;
...
}

private void Form1_Load(object sender, EventArgs e){
    mainFormHandler = Application.OpenForms[0];
   //or instead use this one:
   //mainFormHandler = Application.OpenForms["Form1"];
}

Then you can change the size as below:

mainFormHandler.Width = 600;
mainFormHandler.Height= 400;

or

mainFormHandler.Size = new Size(600, 400);

Another useful point is that if you want to change the size of mainForm from another Form, you can simply use Property to set the size.

answered Feb 7, 2018 at 13:00

GntS's user avatar

GntSGntS

6091 gold badge12 silver badges32 bronze badges

As a complement to the answers given above; do not forget about Form MinimumSize Property, in case you require to create smaller Forms.

Example Bellow:

private void SetDefaultWindowSize()
{
   int sizeW, sizeH;
   sizeW = 180;
   sizeH = 100;

   var size = new Size(sizeW, sizeH);

   Size = size;
   MinimumSize = size;
}

private void SetNewSize()
{
   Size = new Size(Width, 10);
}

answered Oct 9, 2020 at 15:06

romanrex

-8 / 1 / 2

Регистрация: 04.01.2009

Сообщений: 121

1

Изменение размеров формы

20.02.2009, 16:10. Показов 69755. Ответов 10

Метки нет (Все метки)


размеры формы получаю как

C#
1
2
int w = (int)this.ClientSize.Width; // ширина окна            
int h = (int)this.ClientSize.Height; // высота окна

Для изменения размеров использую следующий метод

C#
1
this.Size = new System.Drawing.Size(w + x, h+y);

Проблема в том, что размеры из this.ClientSize определяются внутренней части формы, а при System.Drawing.Size внешние и угадать ширину рамки затруднительно. Как можно задавать размеры именно через внутреннюю часть?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

20.02.2009, 16:10

Ответы с готовыми решениями:

Изменение размеров элементов, при изменение размеров формы
Доброго времени суток, подскажите, как в VS2016 реализовать подобное, а именно:
Имеются следующая…

Изменение размеров элементов, сохраняя пропорции, при изменении размеров самой формы
Как изменять размеры элементов, сохраняя пропорции, при изменении размеров самой формы?

Изменение размеров элементов управления с изменением размеров формы
подскажите, как сделать так чтобы размер элементов управления изменялся пропорционально размерам…

Динамическое изменение размеров формы
Всем доброго времени суток.
Имеется форма, на которой может быть до 10 графиков ZedGraph. Перед…

10

Sergei

1507 / 774 / 103

Регистрация: 22.04.2008

Сообщений: 1,610

20.02.2009, 16:24

2

Зачем для простого изменения формы использавать ClientSize
можно просто допустим при нажатие на кнопку вам надо установить ширну и высоту окно программы в 300 на 300
пишите просто

C#
1
2
            this.Width = 300;
            this.Height = 300;



3



-8 / 1 / 2

Регистрация: 04.01.2009

Сообщений: 121

20.02.2009, 16:35

 [ТС]

3

Sergei
Спасибо, делает то же самое и короче и проще.

Но вопрос, как управлять лишь внутренней частью, а не наружной?



0



1507 / 774 / 103

Регистрация: 22.04.2008

Сообщений: 1,610

20.02.2009, 16:47

4

А что именно тебе нужно сделать?



0



-8 / 1 / 2

Регистрация: 04.01.2009

Сообщений: 121

20.02.2009, 18:30

 [ТС]

5

Внутри формы есть элементы, некоторые имеют собственные фиксированные размеры, некоторые подстраиваются под размеры формы. Ряд элементов можно скрывать и тогда форма должна увеличиваться или уменьшаться в зависимости от того, какие элементы видимые. По этому все размеры желательно внутренние, или на худой конец — внешние. Сейчас же я могу получить размеры внутренние, а устанавливать внешние…



0



1922 / 427 / 41

Регистрация: 12.07.2007

Сообщений: 2,062

22.02.2009, 13:02

6

А так:

Код

this.ClientSize = new System.Drawing.Size(w + x, h+y);

?



0



-8 / 1 / 2

Регистрация: 04.01.2009

Сообщений: 121

22.02.2009, 20:41

 [ТС]

7

Спасибо, так работает как надо .



0



2 / 2 / 2

Регистрация: 24.10.2013

Сообщений: 106

09.04.2014, 11:44

8

А что вы понимаете под х и у?



0



Администратор

Эксперт .NET

9355 / 4637 / 755

Регистрация: 17.04.2012

Сообщений: 9,490

Записей в блоге: 14

10.04.2014, 20:07

9

yurik0103, те величины, на которые нужно увеличить размер формы.

Не по теме:

Когда задаёте вопрос, обращайте внимание на даты предыдущих сообщений, им уже 5 лет и вряд ли их авторы вам ответят.



0



0 / 0 / 0

Регистрация: 27.11.2021

Сообщений: 3

30.11.2021, 06:29

10

А вы ответите?



0



Эксперт .NET

11067 / 7624 / 1178

Регистрация: 21.01.2016

Сообщений: 28,661

30.11.2021, 06:32

11

SuperHacker2015, те величины, на которые нужно увеличить размер формы.

Не по теме:

Когда задаёте вопрос, обращайте внимание на даты предыдущих сообщений, им уже 7 лет и вряд ли их авторы вам ответят.



0



If you want to set the form size programmatically, set the form’s StartPosition property to Manual. Otherwise the form’s own positioning and sizing algorithm will interfere with yours. This is why you are experiencing the problems mentioned in your question.

Example: Here is how I resize the form to a size half-way between its original size and the size of the screen’s working area. I also center the form in the working area.

On computers with multiple monitors, the user probably expects the form to open on the same screen that the mouse pointer is on. We can get it with Screen.FromPoint(Cursor.Position).

public MainView()
{
    InitializeComponent();

    StartPosition = FormStartPosition.Manual;
    Rectangle screen = Screen.FromPoint(Cursor.Position).WorkingArea;
    int w = Width >= screen.Width ? screen.Width : (screen.Width + Width) / 2;
    int h = Height >= screen.Height ? screen.Height : (screen.Height + Height) / 2;
    Location = new Point(screen.Left + (screen.Width - w) / 2, screen.Top + (screen.Height - h) / 2);
    Size = new Size(w, h);
}

Note that setting WindowState to FormWindowState.Maximized alone does not change the size of the restored window. So the window might look good as long as it is maximized, but when restored, the window size and location can still be wrong. So I suggest setting size and location even when you intend to open the window as maximized.

If you want to set the form size programmatically, set the form’s StartPosition property to Manual. Otherwise the form’s own positioning and sizing algorithm will interfere with yours. This is why you are experiencing the problems mentioned in your question.

Example: Here is how I resize the form to a size half-way between its original size and the size of the screen’s working area. I also center the form in the working area.

On computers with multiple monitors, the user probably expects the form to open on the same screen that the mouse pointer is on. We can get it with Screen.FromPoint(Cursor.Position).

public MainView()
{
    InitializeComponent();

    StartPosition = FormStartPosition.Manual;
    Rectangle screen = Screen.FromPoint(Cursor.Position).WorkingArea;
    int w = Width >= screen.Width ? screen.Width : (screen.Width + Width) / 2;
    int h = Height >= screen.Height ? screen.Height : (screen.Height + Height) / 2;
    Location = new Point(screen.Left + (screen.Width - w) / 2, screen.Top + (screen.Height - h) / 2);
    Size = new Size(w, h);
}

Note that setting WindowState to FormWindowState.Maximized alone does not change the size of the restored window. So the window might look good as long as it is maximized, but when restored, the window size and location can still be wrong. So I suggest setting size and location even when you intend to open the window as maximized.

Размер
формы Windows Forms можно указать несколькими
способами. Можно изменить высоту и
ширину формы программными средствами,
задав новое значение свойства Size
или изменив свойства Height
и Width
по отдельности. Если используется Visual
Studio, можно изменить размеры с помощью
конструктора Windows Forms.

Изменить
размер формы программными средствами
можно двумя способами:

  1. Задайте
    для формы свойство Size,
    например:

Имя_переменной_формы.Size
=
new
System.Drawing.Size(ширина,
высота);

Пример:

glob.frm2.Size
= new System.Drawing.Size(300, 300);

  1. Измените
    высоту или ширину с помощью свойств
    Width
    или Height,
    например:

Имя_переменной_формы.Width
= 300;

        1. Добавление фоновых изображений в формы Windows Forms.

При
создании форм Windows Forms иногда нужно
поместить фоновый рисунок на элемент
управления или на саму форму. Для этого
можно использовать настройки, задаваемые
в окне Свойства.

Чтобы
добавить фоновый рисунок в форму Windows
Forms, выполните следующие действия.

  1. Щелкните
    свойство BackgroundImage
    в окне Свойства
    формы. Нажмите кнопку с многоточием
    ()
    для открытия диалогового окна Выбор
    ресурса.

  2. Щелкните
    Импорт
    для открытия диалогового окна Открытие
    файла.
    Перейдите в папку, в которой находится
    файл рисунка (с расширением BMP). Нажмите
    кнопку Открыть,
    чтобы открыть файл.

Обратите
внимание, что выбранный файл теперь
находится в списке Файла
ресурсов проекта,
а рисунок отображается в окне
Предварительный
просмотр.

  1. Нажмите
    кнопку ОК,
    чтобы импортировать рисунок как ресурс.
    Обратите
    внимание, что теперь рисунок будет
    отображаться в форме. Управлять внешним
    видом рисунка в форме можно с помощью
    свойства BackgroundImageLayout.

Обратите
внимание, что в проекте появилась папка
Ресурсы (в
обозревателе решений),
в которую скопирован рисунок.

Примечание.
Если выбрать Локальный ресурс, то папка
Resoures
не будет создана, а в проекте будет
храниться ссылка на файл с рисунком.
При выборе опции Файл ресурсов проекта
создается в папке с проектом новая папка
под названием Resoures,
в которую копируется выбранных графический
файл.

Чтобы
удалить фоновый рисунок из формы Windows
Forms
в окне
Свойства
щелкните правой кнопкой мыши кнопку с
многоточием ()
для свойства BackgroundImage
и выберите Сброс.

        1. Отображение модальных и немодальных форм Windows Forms

Формы
и диалоговые окна могут быть модальными
и немодальными. Модальная
форма или диалоговое окно должно быть
закрыто или спрятано перед продолжением
работы с другими формами приложения.

Диалоговые
окна, в которых отображаются важные
сообщения, должны всегда быть модальными.

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

Чтобы
отобразить форму как модальное диалоговое
окно

вызовите метод ShowDialog.

В
следующем примере кода показан способ
отображения модального диалогового
окна.

glob.frm2.ShowDialog();

В
методе ShowDialog
существует необязательный аргумент
owner,
который можно использовать в форме для
определения отношения «главный-подчиненный».
Например, когда с помощью кода в главной
форме отображается диалоговое окно, в
качестве значения аргумента owner
диалогового окна можно передать значение
this,
чтобы определить, что главная форма
является владельцем. Это показано в
следующем примере.

glob.frm2.ShowDialog(this);

Чтобы
отобразить форму как немодальное
диалоговое окно
вызовите
метод Show.

В
следующем примере показан способ
отображения диалогового окна в немодальном
формате.

glob.frm2.Show();

Примечание.

При отображении
модальной формы код, следующий после
метода ShowDialog,
не выполняется до тех пор, пока не будет
закрыто диалоговое окно. При отображении
немодальной формы код, следующий после
метода Show,
выполняется немедленно после отображения
формы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

В статье рассмотрим способ создания «резинового» интерфейса в формах Windows Forms и разберёмся, как растянуть элементы на форме при изменении размера окна программы.

Создадим в Visual Studio проект Windows Forms и разместим на форме следующие элементы управления:

  • Label
  • TextBox
  • RichTextBox
  • Button

Начальный интерфейс Windows Forms

Запустим программу и с помощью мыши попробуем увеличить размеры окна, потянув правый нижний угол формы. В результате получим следующее:

Растягивание интерфейса Windows Forms

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

Теперь покажем, как создать адаптивный к изменениям размера окна интерфейс на форме Windows Forms.

Как растянуть элементы на форме Windows Forms

Для создания «резинового» интерфейса нужно воспользоваться свойствами элементов управления из категории Макет (Layout). А конкретно свойством Anchor.

В Windows Forms свойство Anchor определяет стороны контейнера (Top, Bottom, Left, Right) к которым привязывается элемент управления. При изменении размера контейнера расстояние между указанной стороной контейнера и ближайшей к ней стороне элемента управления остаётся неизменным.

Таким образом можно добиться растягивания и перемещения элементов в форме при изменении её размера.

В нашем случае контейнером для элементов управления является всё окно.

Зададим для TextBox значение атрибута Anchor = Top, Left, Right. Теперь расстояние между соответствующими сторонами ТекстБокса и окна будет неизменным. Так мы добьёмся изменения ширины контрола при изменении ширины окна.

Установка значения Anchor для TextBox

Для RichTextBox значение свойства Anchor сделаем равным Top, Bottom, Left, Right.

Установка значения Anchor для RichTextBox

У кнопки Button установим Anchor, как Top, Right.

Установка значения Anchor для Button

Теперь запустим программу и изменим размер окна: увидим, что элементы управления на форме растягиваются и меняют своё местоположение. Теперь интерфейс стал адаптированным к изменению размера окна.

Растянуть элементы на форме Windows Forms

Есть ещё один момент. Когда мы будем уменьшать мышью размер формы — контролы будут скрываться из поля зрения.

Элементы управления не видны на форме

Чтобы решить данную проблему, необходимо указать минимальный размер формы Windows Form в пикселях. Тем самым форму будет невозможно сделать меньше установленного размера.

Щёлкнем по форме и в окне свойств изменим параметр MinimunSize. Установим его равным текущему размеру формы в визуальном редакторе (Size).

Минимальный размер формы

Минимальный размер можно указать и меньшим — таким, при котором интерфейс хорошо выглядит и сохраняет свою функциональность. Нужные значения определяются экспериментально — для этого самостоятельно изменяйте размер формы.

Понравилась статья? Поделить с друзьями:
  • Как изменить права учетной записи windows 7
  • Как изменить размер фона рабочего стола windows 10
  • Как изменить протокол wifi на ноутбуке windows 10
  • Как изменить права доступа пользователя в windows 10
  • Как изменить размер файла подкачки компьютера windows 10