Как красиво оформить виндовс форму
Перейти к содержимому

Как красиво оформить виндовс форму

  • автор:

Как красиво оформить виндовс форму

По умолчанию все формы в Windows Forms являются прямоугольными. Однако мы можем создавать и непрямоугольные произвольные формы. Для этого используется свойство Region . В качестве значения оно принимает объект одноименного класса Region.

При создании непрямоугольных форм, как правило, не используются границы формы, так как границы задаются этим объектом Region. Чтобы убрать границы формы, надо присвоить у формы свойству FormBorderStyle значение None .

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

Итак, перейдем к коду формы и изменим его следующим образом:

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 < Point moveStart; // точка для перемещения public Form1() < InitializeComponent(); this.FormBorderStyle = FormBorderStyle.None; this.BackColor = Color.Yellow; Button button1 = new Button < Location = new Point < X = this.Width / 3, Y = this.Height / 3 >>; button1.Text = "Закрыть"; button1.Click += button1_Click; this.Controls.Add(button1); // добавляем кнопку на форму this.Load += Form1_Load; this.MouseDown += Form1_MouseDown; this.MouseMove += Form1_MouseMove; > private void button1_Click(object sender, EventArgs e) < this.Close(); >private void Form1_Load(object sender, EventArgs e) < System.Drawing.Drawing2D.GraphicsPath myPath = new System.Drawing.Drawing2D.GraphicsPath(); // создаем эллипс с высотой и шириной формы myPath.AddEllipse(0, 0, this.Width, this.Height); // создаем с помощью элипса ту область формы, которую мы хотим видеть Region myRegion = new Region(myPath); // устанавливаем видимую область this.Region = myRegion; >private void Form1_MouseDown(object sender, MouseEventArgs e) < // если нажата левая кнопка мыши if (e.Button == MouseButtons.Left) < moveStart = new Point(e.X, e.Y); >> private void Form1_MouseMove(object sender, MouseEventArgs e) < // если нажата левая кнопка мыши if ((e.Button & MouseButtons.Left) != 0) < // получаем новую точку положения формы Point deltaPos = new Point(e.X - moveStart.X, e.Y - moveStart.Y); // устанавливаем положение формы this.Location = new Point(this.Location.X + deltaPos.X, this.Location.Y + deltaPos.Y); >> > >

Непрямоугольные формы в Windows Forms

Создание области формы происходит в обработчике события Form1_Load. Для создания области используется графический путь — объект класса System.Drawing.Drawing2D.GraphicsPath , в который добавляется эллипс. Графический путь позволяет создать фигуру любой формы, поэтому, если мы захотим форму в виде морской звезды, то нам просто надо должным образом настроить используемый графический путь.

Для закрытия формы в обработчике события нажатия кнопки button1_Click форма закрывается программным образом: this.Close()

Для перемещения формы обрабатываются два события формы — событие нажатия кнопки мыши и событие перемещения указателя мыши.

Работа с формами

Внешний вид приложения является нам преимущественно через формы. Формы являются основными строительными блоками. Они предоставляют контейнер для различных элементов управления. А механизм событий позволяет элементам формы отзываться на ввод пользователя, и, таким образом, взаимодействовать с пользователем.

При открытии проекта в Visual Studio в графическом редакторе мы можем увидеть визуальную часть формы — ту часть, которую мы видим после запуска приложения и куда мы переносим элементы с панели управления. Но на самом деле форма скрывает мощный функционал, состоящий из методов, свойств, событий и прочее. Рассмотрим основные свойства форм.

Если мы запустим приложение, то нам отобразится одна пустая форма. Однако даже такой простой проект с пустой формой имеет несколько компонентов:

Все файлы в Windows Forms

Несмотря на то, что мы видим только форму, но стартовой точкой входа в графическое приложение является класс Program, расположенный в файле Program.cs:

using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace HelloApp < static class Program < [STAThread] static void Main() < Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); >> >

Сначала программой запускается данный класс, затем с помощью выражения Application.Run(new Form1()) он запускает форму Form1. Если вдруг мы захотим изменить стартовую форму в приложении на какую-нибудь другую, то нам надо изменить в этом выражении Form1 на соответствующий класс формы.

Сама форма сложна по содержанию. Она делится на ряд компонентов. Так, в структуре проекта есть файл Form1.Designer.cs, который выглядит примерно так:

namespace HelloApp < partial class Form1 < /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) < if (disposing && (components != null)) < components.Dispose(); >base.Dispose(disposing); > #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() < this.SuspendLayout(); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(284, 261); this.Name = "Form1"; this.Text = "Привет мир!"; this.ResumeLayout(false); >#endregion > >

Здесь объявляется частичный класс формы Form1, которая имеет два метода: Dispose() , который выполняет роль деструктора объекта, и InitializeComponent() , который устанавливает начальные значения свойств формы.

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

Но на практике мы редко будем сталкиваться с этим классом, так как они выполняет в основном дизайнерские функции — установка свойств объектов, установка переменных.

Еще один файл — Form1.resx — хранит ресурсы формы. Как правило, ресурсы используются для создания однообразных форм сразу для нескольких языковых культур.

И более важный файл — Form1.cs, который в структуре проекта называется просто Form1, содержит код или программную логику формы:

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(); >> >

По умолчанию здесь есть только конструктор формы, в котором просто вызывается метод InitializeComponent() , объявленный в файле дизайнера Form1.Designer.cs. Именно с этим файлом мы и будем больше работать.

Создание приложения Windows Forms на C# в Visual Studio

В этом руководстве вы создадите простое приложение C# с пользовательским интерфейсом на основе Windows.

Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого.

На некоторых снимках экрана в этом учебнике используется темная тема. Если вы не используете темную тему, но хотите переключиться на нее, см. страницу Персонализация интегрированной среды разработки и редактора Visual Studio.

Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio 2022, если еще не сделали этого.

Создание проекта

Сначала вы создадите проект приложения на C#. Для этого типа проекта уже имеются все нужные файлы шаблонов, что избавляет вас от лишней работы.

  1. Откройте Visual Studio.
  2. На начальном экране выберите Создать проект. View the
  3. В окне Создать проект выберите шаблон Приложение Windows Forms (.NET Framework) для C#. (Если вы предпочитаете, вы можете уточнить поиск, чтобы быстро получить нужный шаблон. Например, введите или введите приложение Windows Forms в поле поиска. Затем выберите C# в списке языков и выберите Windows в списке платформ.) Choose the C# template for the Windows Forms App (.NET Framework)

Примечание. Если шаблон Приложение Windows Forms (.NET Framework) отсутствует, его можно установить из окна Создание проекта. В сообщении Не нашли то, что искали? выберите ссылку Установка других средств и компонентов. The После этого в Visual Studio Installer выберите рабочую нагрузку Разработка классических приложений .NET. .NET Core workload in the Visual Studio InstallerЗатем нажмите кнопку Изменить в Visual Studio Installer. Вам может быть предложено сохранить результаты работы; в таком случае сделайте это. Выберите Продолжить, чтобы установить рабочую нагрузку. После этого вернитесь к шагу 2 в процедуре Создание проекта.

in the

  • В поле Имя проекта окна Настроить новый проект введите HelloWorld. Затем нажмите Создать. Новый проект открывается в Visual Studio.
    1. Откройте Visual Studio.
    2. В окне запуска выберите Создание нового проекта. Screenshot to show the Create a new project window.
    3. В окне Создание проекта выберите шаблон Приложение Windows Forms (.NET Framework) для C#. (Если вы предпочитаете, вы можете уточнить поиск, чтобы быстро получить нужный шаблон. Например, введите или введите приложение Windows Forms в поле поиска. Затем выберите C# в списке языков , а затем выберите Windows в списке платформ .) Screenshot to select the C# template for the Windows Forms App (.NET Framework).

    Примечание. Если шаблон Приложение Windows Forms (.NET Framework) отсутствует, его можно установить из окна Создание проекта. В сообщении Не нашли то, что искали? выберите ссылку Установка других средств и компонентов. Screenshot to show the The После этого выберите рабочую нагрузку Разработка классических приложений .NET в Visual Studio Installer. Screenshot to show the .NET Core workload in the Visual Studio Installer.Затем нажмите кнопку Изменить в Visual Studio Installer. Вам может быть предложено сохранить результаты работы; в таком случае сделайте это. Выберите Продолжить, чтобы установить рабочую нагрузку. После этого вернитесь к шагу 2 в процедуре Создание проекта.

    Screenshot to show the

  • В поле Имя проекта окна Настроить новый проект введите HelloWorld. Затем выберите Создать. Новый проект открывается в Visual Studio.
  • Создание приложения

    Когда вы выберете шаблон проекта C# и зададите имя файла, Visual Studio открывает форму. Форма является пользовательским интерфейсом Windows. Мы создадим приложение Hello World, добавив элементы управления на форму, а затем запустим его.

    Добавление кнопки на форму

    1. Выберите Панель элементов, чтобы открыть всплывающее окно «Панель элементов». Screenshot to select the Toolbox to open the Toolbox window.(Если вы не видите Флажок всплывающего меню панели элементов можно открыть в строке меню. Для этого просмотрите >панель элементов. Или нажмите клавиши CTRL+ALT+X.)
    2. Разверните общие элементы управления и выберите значок «Закрепить«, чтобы закрепить окно панели элементов. Screenshot to select the Pin icon to pin the Toolbox window to the IDE.
    3. Выберите элемент управления Кнопка и перетащите его на форму. Screenshot to add a button to the form.
    4. В окне Свойства найдите Текст, измените имя с button1 на Click this и нажмите клавишу ВВОД. Screenshot to add text to the button on the form by using the Properties window.(Если вы не видите Окно свойств можно открыть в строке меню. Для этого выберите окно «Просмотр>свойств». Или нажмите клавишу F4.)
    5. В разделе Конструктор окна Свойства измените имя с button1 на btnClickThis и нажмите клавишу ВВОД. Screenshot to add a function to the button on the form by using the Properties window.

    Примечание. Если список в окне Свойства был упорядочен по алфавиту, button1 появится в разделе Привязки данных.

    Добавление метки на форму

    Теперь, когда мы добавили элемент управления »Кнопка» для создания действия, давайте добавим элемент управления «Метка», куда можно отправлять текст.

    1. Выберите элемент управления Метка в окне Панель элементов, а затем перетащите его на форму и расположите под кнопкой Нажмите это.
    2. В разделе Конструктор или Привязки данных окна Свойства измените имя label1 на lblHelloWorld и нажмите клавишу ВВОД.

    Добавление кода на форму

    Screenshot to add code to the form

    1. В окне Form1.cs [Конструктор] дважды щелкните эту кнопку, чтобы открыть окно Form1.cs. (Кроме того, можно развернуть узел Form1.cs в обозревателе решений, а затем выбрать Form1.)
    2. В окне Form1.cs после строки private void введите lblHelloWorld.Text = «Hello World!»; , как показано на следующем снимке экрана:

    Выполнение приложения

    1. Нажмите кнопку Запустить, чтобы запустить приложение. Screenshot to select Start to debug and run the app.Будет выполнено несколько операций. В интегрированной среде разработки Visual Studio откроются окна Средства диагностики и Вывод. Кроме того, вне этой среды откроется диалоговое окно Form1. Оно будет содержать вашу кнопку Нажмите это и текст label1.
    2. Нажмите кнопку Нажмите это в диалоговом окне Form1. Обратите внимание, что текст label1 меняется на Hello World!. Screenshot to show a Form1 dialog box that includes label1 text.
    3. Закройте диалоговое окно Form1, чтобы завершить работу приложения.

    Создание приложения

    Когда вы выберете шаблон проекта C# и зададите имя файла, Visual Studio открывает форму. Форма является пользовательским интерфейсом Windows. Мы создадим приложение Hello World, добавив элементы управления на форму, а затем запустим его.

    Добавление кнопки на форму

    1. Щелкните Панель элементов, чтобы открыть всплывающее окно «Панель элементов». Choose the Toolbox to open the Toolbox window(Если вы не видите Флажок всплывающего меню панели элементов можно открыть в строке меню. Для этого просмотрите >панель элементов. Или нажмите клавиши CTRL+ALT+X.)
    2. Щелкните значок Закрепить, чтобы закрепить окно Панель элементов. Choose the Pin icon to pin the Toolbox window to the IDE
    3. Выберите элемент управления Кнопка и перетащите его на форму. Add a button to the form
    4. В окне Свойства найдите элементТекст, измените имя с Button1 на Click this , а затем нажмите клавишу ВВОД. Add text to the button on the form(Если вы не видите Окно свойств можно открыть в строке меню. Для этого выберите окно «Просмотр>свойств». Или нажмите клавишу F4.)
    5. В разделе Проектирование окна Свойства измените имя с Button1 на btnClickThis , а затем нажмите клавишу ВВОД. Add a function to the button on the form

    Примечание. Если список был упорядочен по алфавиту в окне Свойства, Button1 появится в разделе (DataBindings).

    Добавление метки на форму

    Теперь, когда мы добавили элемент управления »Кнопка» для создания действия, давайте добавим элемент управления «Метка», куда можно отправлять текст.

    1. Выберите элемент управления Метка в окне Панель элементов, а затем перетащите его на форму и расположите под кнопкой Нажмите это.
    2. В разделе Проект или (DataBindings) окна Свойства измените имя Label1 на lblHelloWorld и нажмите клавишу ВВОД.

    Добавление кода на форму

    Add code to the form

    1. В окне Form1.cs [Конструктор] дважды щелкните эту кнопку, чтобы открыть окно Form1.cs. (Кроме того, можно развернуть Form1.cs в Обозреватель решений, а затем выберите команду View Code (или нажмите клавишу F7) в меню правой кнопкой мыши в Form1.cs.)
    2. В окне Form1.cs после строки private void введите lblHelloWorld.Text = «Hello World!»; , как показано на следующем снимке экрана:

    Выполнение приложения

    1. Нажмите кнопку Запустить, чтобы запустить приложение. Choose Start to debug and run the appБудет выполнено несколько операций. В интегрированной среде разработки Visual Studio откроются окна Средства диагностики и Вывод. Кроме того, вне этой среды откроется диалоговое окно Form1. Оно будет содержать вашу кнопку Нажмите это и текст Label1.
    2. Нажмите кнопку Нажмите это в диалоговом окне Form1. Обратите внимание, что текст Label1 меняется на Hello World!. A Form1 dialog box that includes Label1 text
    3. Закройте диалоговое окно Form1, чтобы завершить работу приложения.

    Следующие шаги

    Поздравляем с завершением этого учебника! Для получения дополнительных сведений перейдите к следующему руководству:

    См. также

    • Другие руководства по C#
    • Руководства по Visual Basic
    • Руководства по C++

    Дизайн Windows Forms C#?

    3hufo.png

    Всем привет, пишу курсач на C#, (тема АИС «Мебельный магазин», программа «построена» на контейнере MDI, кода мало, в основном все за счет «конструктора») в целом ничего не обычного, так вот хотелось бы хоть какой-то приятный вид придать, что-то в стиле Materia, Metro, Fluent. Нашел Telerik UI, но в случае его использования необходимо все заново делать да и с ним не особо склеилось, в процессе гугления ничего подходящего не нашел или плохо искал, в основном все про WPF. Может кто сталкивался с похожим вопросом?

    • Вопрос задан более трёх лет назад
    • 9643 просмотра

    4 комментария

    Простой 4 комментария

    FoggyFinder

    Foggy Finder @FoggyFinder
    teuchezh @teuchezh Автор вопроса
    Foggy Finder, MaterialSkin сразу отпадает, попробую ModernUI

    mindtester

    # @mindtester Куратор тега C#

    MaterialSkin сразу отпадает, попробую ModernUI

    Zoominger

    Может кто сталкивался с похожим вопросом?

    Решения вопроса 0
    Ответы на вопрос 1

    cyber_roach

    cyber_roach @cyber_roach
    UX дизайнер INEDIapps

    Объясню на пальцах
    1) Windows Forms родились во времена Windows 95 когда над дизайном окон в windows думали единицы.
    Внедрение возможно, но это сродни пыткам и БДСМ, а какой-нибудь material Style вообще могут единицы на нем сделать, хотя в итоге выглядеть будет все равно как китайская подделка (присмотритесь к кривизне материал у телерика на формах в сравнении с андроидом, поймете о чем я)
    2) MDI контейнер не используется с 2003го. (как вышел .net), вместо него сейчас более перспективные Docking либо tab-компоновка (см любой браузер) либо Ribbon.
    Есть конечно исключения, например в Photoshop можно включить что-то вроде MDI режима, но это очень специфичные кейсы использования.

    Уже только 2 этих фактора лишают вас каких либо современных методов/библиотек для интеграции кастомных дизайнов в проект

    3) WPF.
    Почему вы видите информацию в разрезе десктопного дизайна только про него.
    Ну потому что, там оптимальное соотношение цена/время/качество в интеграции.
    Можно сделать почти все что угодно, но для хардкора нужен большой скилл (как и везде впрочем)
    Примеры можно посмотреть у меня https://inediapps.com/portfolio/
    В будущем рекомендую переходить на данную платформу, хотя некоторые олдфаги могут тут со мной поспорить. Насчет актуальности — он быстрее форм, его Microsoft сейчас активно поддерживает, он opensource, поддержка тача и hiDPI, перспектива кроссплатформенности (Avalonia, Unity3D, Xamarin+.net5 …)

    Вывод.
    Понять, простить и забыть о дизайне MDI + WinForm.

    Добавить комментарий

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