Структура программы Windows form

Простейшее приложение WinForms может выглядеть подобно следующему примеру: using System; using System.Windows.Forms; namespace SimpleApp < // главное окно class MainWindow : Form < public MainWindow() < >> // класс программы class Program < static void Main(string[] args) < // создаем главное окно Application.Run(new MainWindow()); > > > Как видно, помимо реализующего точку входа приложений класса Program, создается класс, наследующий от Form. Экземпляр данного класса и представляет собой главное окно запускаемого приложения. Собственно запуск оконного приложения осуществляется при помощи вызова Application.Run(), которому передается ссылка на экземпляр главного окна.

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

  • В классе, порожденном от Form, определяется переменная-член нужного элемента UI.
  • Настраивается внешний вид и поведение элемента UI.
  • Полученный элемент UI добавляется в контейнер ControlCollection нужного родитель с помощью вызова Controls.Add()

События

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

Intro to Windows Forms (WinForms) in .NET 6

class MainWindow : Form

// Устанавливаем обработчики событий создания окна и щелчка мышью

Развертывание приложений на клиентских компьютерах

После создания приложения необходимо отправить его пользователям, чтобы они могли установить и запустить его на своих клиентских компьютерах. С помощью технологии ClickOnce можно развертывать приложения из Visual Studio всего в несколько щелчков, а затем предоставлять пользователям URL-адрес приложения в Интернете. ClickOnce управляет всеми элементами и зависимостями в приложении и обеспечивает его правильную установку на клиентском компьютере.

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

Читайте также:
С какой программой можно Windows на флешки

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

См. также

  • Руководство по созданию приложения WinForms
  • Добавление формы в проект
  • Добавление элемента управления

Источник: learn.microsoft.com

C# Programming Tutorials: Beginners 05 Windows Forms and Event Handlers

WinForms F# — интерактивное приложение

Приложение Windows Forms на языке программирования F#

Приложение Windows Forms создано на основе консольной F# программы. Код приложения разделён на несколько логических модулей. Модули инициализации элементов управления и формы сгруппированы в отдельной папке. Программный код интерактивности приложения также вынесен в отдельный модуль. Такое построение напоминает разделённый на частичные классы приложение языка C#.

В приложение добавлен простейший код F# для демонстрации интерактивности приложения.

На основе предлагаемого приложения можно заниматься изучением языка программирования F#. В оконном приложении гораздо нагляднее смотрятся результаты функций и выражений. Кроме того, на основе данного исходника, можно создавать вполне работоспособные приложения на языке F#.

Перестройка консольного приложения

Изменить файл проекта в Visual Studio

Прежде всего в интегрированной среде программирования MS Visual Studio 2019 создаётся консольное приложение для языка F#. На данный момент для приложения выбрана максимальная целевая платформа .NET5.

Для поддержки функционирования каркаса Windows Forms в файле проекта консольного приложения необходимо сделать соответствующие изменения. В 16 версии Visual Studio нет возможностей визуального добавления поддержки платформы Windows Forms для проектов языка F# (появилась в 17 версии студии), поэтому изменим файл проекта вручную, в встроенном текстовом редакторе. В окне обозревателя решений щелкаем правой кнопкой мыши над именем проекта и в появившемся диалоговом окне вызываем текстовый редактор для файла проекта.

В окне текстового редактора отобразится следующая XML-разметка:

Exe net5.0 3390;$(WarnOn)

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

Читайте также:
Как окно программы Windows 7

WinExe net5.0-windows true

После перезагрузки проекта, в обозревателе решений, в зависимостях проекта, можно увидеть добавленную платформу Microsoft.Windows.Desktop.App.WindowsForms для поддержки оконных элементов.

Обозреватель решений Visual Studio

Структура кода приложения

Структура кода приложения F# Windows Forms

Структура предлагаемого приложения Windows Forms на языке F# состоит из четырех файлов-модулей. Три файла — InitControls.fs, FormModule.fs, CodeFormModule.fs — формируют код формы и находятся в одном пространстве имён. Один — Program.fs — это общий файл запуска приложения. Файлы — InitControls.fs, FormModule.fs — в которых происходит инициализация формы и элементов управления сгруппированы в папку.

Файл формы CodeFormModule.fs, предназначенный для рабочего кодирования, вынесен за пределы папки формы. Такое построение структуры модулей позволило отделить код инициализации формы и визуальных элементов управления от программного кода бизнес-логики приложения.

Модуль в контексте языка программирования F# — это основной способ группирования логически связанного программного кода. Модули могут представлять из себя отдельные файлы или же в одном файле можно объявить несколько модулей. Описываемая структура приложения создавалась именно с целью распределить логически родственные коды F# по отдельным модулям приложения.

Модуль инициализации элементов управления

InitControls.fs — файл-модуль F# объявления и инициализации элементов управления перед добавлением в главную форму приложения. Модуль содержит несколько функций, составные выражения которых возвращают полностью подготовленные элементы для размещения на форме.

Для примера взяты табличный контейнер TableLayoutPanel и четыре кнопки Button, динамически размещаемые в ячейках табличного элемента управления.

Листинг кода модуля InitControls.fs:

namespace MyWindowsForm open System.Windows.Forms open System.Drawing module InitControls = // — Объявление и инициализация свойств элементов управления — // Виды кнопок. let standardButton = Size(100, 70) let plumpButton = Size(200,200) let tableLayoutPanel = let tlp = new TableLayoutPanel() tlp.CellBorderStyle ignore tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)) |> ignore tlp.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)) |> ignore tlp.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)) |> ignore tlp.Dock

Модуль создания формы приложения

Модуль FormModule.fs предназначен для объявления собственного класса MyForm формы приложения. В этом же модуле создаётся объект MyForm и к нему добавляются элементы управления предварительно инициированные в модуле InitControls.fs.

Читайте также:
Лучшие программы для монтажа на Виндовс

Для формирования внешнего вида приложения элементы добавляются к форме внутри поля между спаренными методами SuspendLayout() — ResumeLayout(). Данные методы исключают повторы перерасчета макета формы при добавлении каждого элемента и запускают формирование макета только после вызова метода ResumeLayout(). Конечно, если форма состоит из нескольких элементов, спаренные методы заметно не увеличивают производительность. Но с учётом возможного роста создаваемого проекта приложения, такое построение кода создания формы всё же желательно использовать, тем более что накладные расходы при вызовах SuspendLayout() — ResumeLayout() не существенны.

Программный код модуля формы FormModule.fs:

namespace MyWindowsForm open System.Windows.Forms open System.Drawing open InitControls module FormModule = // — Модуль создания и инициализации формы — type MyForm() = inherit Form() do base.Text

Модуль рабочего кода приложения

Модуль F# CodeFormModule.fs предназначен для рабочего кода приложения, это модуль взаимодействия элементов управления и бизнес-логики приложения. Здесь находятся методы обработки событий компонентов формы, здесь же осуществляется изменение свойств элементов и формы для обеспечения интерактивности программы.

namespace MyWindowsForm open System open System.Windows.Forms open InitControls open FormModule open System.Drawing // — Модуль рабочего кода формы — module Code = let myCodeForm = myForm myCodeForm.Text Button if button = button1 then Console.Beep(300, 300) if button = button2 then Console.Beep(500, 300) if button = button3 then Console.Beep(1000, 300) if button = button4 then Console.Beep(3000, 300) // Если кнопка стандартная, то делаем её пухлой, // и наоборот. if isStandart button then button.Size

Модуль запуска работы приложения

В модуле F# Program.fs находится код настроек и запуска приложения.

open System.Windows.Forms open MyWindowsForm // Стили элементов управления для поддержки тем операционной системы. Application.EnableVisualStyles() // Режим отображения текста в окнах приложения. // Улучшает качество отображения строк. // Повышает графическую производительность приложения. Application.SetCompatibleTextRenderingDefault(false) // Запускает стандартный цикл обработки сообщений приложения // в текущем потоке и делает указанную форму видимой. Application.Run(Code.myCodeForm)

Исходник Windows Forms F#

Исходник написан в интегрированной среде программирования MS Visual Studio 2019, тестировался в Visual Studio 2022 Preview 4.

Источник: www.interestprograms.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru