Какой интерфейс пользователя реализует платформа windows forms
Перейти к содержимому

Какой интерфейс пользователя реализует платформа windows forms

  • автор:

Руководство по классическим приложениям (Windows Forms .NET)

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

Документация по рабочему столу для .NET 7 и .NET 6 находится в стадии разработки.

Существует две реализации Windows Forms.

  1. Реализация с открытым исходным кодом, размещенная на GitHub. Эта версия работает в .NET 6+. Для использования визуального конструктора Windows Forms требуется версия Visual Studio 2019 не ниже 16.8. Последняя версия — Windows Forms для .NET 7 с помощью Visual Studio 2022 версии 17.4.
  2. Реализация .NET Framework 4, поддерживаемая в Visual Studio 2022, Visual Studio 2019 и Visual Studio 2017. .NET Framework 4 — это версия .NET только для Windows, которая считается компонентом операционной системы Windows. Эта версия Windows Forms распространяется с .NET Framework.

Данное руководство по рабочему столу создано для Windows Forms в .NET 5 и более поздних версиях. Дополнительные сведения о версии Windows Forms для .NET Framework см. в разделе Windows Forms для .NET Framework.

Введение

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

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

О том, как создать приложение Windows Forms, см. в руководстве по созданию приложения WinForms.

Зачем нужна миграция с .NET Framework

Windows Forms для .NET предоставляет новые функции и улучшения по сравнению с платформа .NET Framework. Дополнительные сведения см. в статье «Новые возможности Windows Forms для .NET 7». Сведения об обновлении приложения см. в статье «Как обновить классическое приложение Windows Forms до .NET 7»

Создание многофункциональных интерактивных пользовательских интерфейсов

Windows Forms — это технология пользовательского интерфейса для .NET, представляющая собой набор управляемых библиотек, которые упрощают выполнение стандартных задач, таких как чтение из файловой системы и запись в нее. С помощью среды разработки, такой как Visual Studio, можно создавать интеллектуальные клиентские приложения Windows Forms, которые отображают информацию, запрашивают ввод пользователя и взаимодействуют с удаленными компьютерами по сети.

В Windows Forms форма — это визуальная поверхность, на которой выводится информация для пользователя. Обычно приложение Windows Forms строится путем добавления элементов управления в формы и создания кода для реагирования на действия пользователя, такие как щелчки мыши или нажатия клавиш. Элемент управления — это отдельный элемент пользовательского интерфейса, предназначенный для отображения или ввода данных.

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

В Windows Forms предусмотрено множество элементов управления, которые можно добавлять в формы. Например, элементы управления могут отображать текстовые поля, кнопки, раскрывающиеся списки, переключатели и даже веб-страницы. Если предусмотренные элементы управления не подходят для ваших целей, в Windows Forms можно создавать собственные пользовательские элементы управления с помощью класса UserControl.

В Windows Forms имеются многофункциональные элементы управления пользовательского интерфейса, позволяющие эмулировать функции таких сложных приложений, как Microsoft Office. С помощью элементов управления ToolStrip и MenuStrip вы можете создавать панели инструментов и меню, которые содержат текст и изображения, отображают подменю и размещают другие элементы управления, такие как текстовые поля и поля со списками.

Используя функцию перетаскивания конструктора Windows Forms в Visual Studio, можно легко создавать приложения Windows Forms. Просто выделите элемент управления с помощью курсора и поместите его на нужное место в форме. Для преодоления трудностей, связанных с выравниванием элементов управления, конструктор предоставляет такие средства, как линии сетки и линии привязки. С помощью элементов управления FlowLayoutPanel, TableLayoutPanel и SplitContainer можно гораздо быстрее создавать сложные макеты форм.

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

Создание форм и элементов управления

Пошаговые инструкции по использованию этих возможностей можно найти в приведенных ниже разделах справки.

  • Добавление формы в проект
  • Добавление элементов управления в форму

Отображение и обработка данных

Во многих приложениях требуется отображать данные из базы данных, файла XML или JSON, веб-службы или другого источника данных. Windows Forms предоставляет гибкий элемент управления с именем DataGridView для отображения таких табличных данных в традиционном формате строк и столбцов так, что каждый фрагмент данных занимает свою собственную ячейку. С помощью DataGridView можно, помимо прочего, настроить внешний вид отдельных ячеек, зафиксировать строки и столбцы на своем месте, а также обеспечить отображение сложных элементов управления внутри ячеек.

В Windows Forms можно с легкостью подключаться к источникам данных по сети. Компонент BindingSource представляет подключение к источнику данных и содержит методы для привязки данных к элементам управления, перехода к предыдущей или следующей записи, редактирования записей и сохранения изменений в исходном источнике. Элемент управления BindingNavigator предоставляет простой интерфейс на основе компонента BindingSource для перехода между записями.

Вы можете легко создавать элементы управления с привязкой к данным с помощью окна «Источники данных» в Visual Studio. В этом окне отображаются существующие в вашем проекте источники данных, такие как базы данных, веб-службы и объекты. Создавать элементы управления с привязкой к данным можно путем перетаскивания объектов из этого окна в формы проекта. Также можно связывать существующие элементы управления с данными, перетаскивая объекты из окна «Источники данных» в существующие элементы управления.

Другой тип привязки к данным в формах Windows Forms — это параметры. В большинстве приложений требуется сохранять некоторые сведения о состоянии приложения во время выполнения, например, последний известный размер форм, а также данные пользовательских предпочтений, например, место сохранения файлов по умолчанию. Параметры приложения отвечает этим требованиям, предоставляя простой способ хранения обоих типов сведений на клиентском компьютере. После того как вы определите эти параметры с помощью Visual Studio или редактора кода, они сохраняются в XML-файле и автоматически считываются обратно в память во время выполнения.

component | [How to: Bind Windows Forms Controls with the BindingSource Component Using the Designer](./controls/bind-wf-controls-with-the-bindingsource.md) | | Working with ADO.NET data sources | [How to: Sort and Filter ADO.NET Data with the Windows Forms BindingSource Component](./controls/sort-and-filter-ado-net-data-with-wf-bindingsource-component.md) | | Using the Data Sources window | [Bind Windows Forms controls to data in Visual Studio](/visualstudio/data-tools/bind-windows-forms-controls-to-data-in-visual-studio) | | Using app settings | [How to: Create Application Settings](./advanced/how-to-create-application-settings.md) | —>

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

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

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

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

См. также

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

WinForms

Windows Forms — название той части .NET Framework, которая отвечает за графический интерфейс пользователя. Windows Forms «оборачивает» в управляемый код стандартные элементы управления Windows, доступные при помощи Win32 API. Причем управляемый код — классы, реализующие API для Windows Forms, не зависят от языка разработки. Т.е. программист одинаково может использовать Windows Forms как при написании ПО на C#, С++, так и на VB.Net, J# и др.

Внутри .NET Framework, Windows Forms реализуется в рамках пространства имён System.Windows.Forms .

Ссылки

Amiga OS BOOPSI · Magic User Interface · Zune · ReAction GUI
Mac OS и Mac OS X · MacApp · MacZoop · PowerPlant
Microsoft Windows Microsoft Foundation Classes · Windows Template Library · SmartWin++ · Object Windows Library · Visual Component Library · Windows Forms · Windows Presentation Foundation
Unix, under the X Xaw · · · InterViews
Cross-platform Based on Flash: Adobe Flex · · SWF2EXE Software

Based on Pascal: IP Pascal · · fpGUI
Based on Objective C: GNUstep

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое «WinForms» в других словарях:

  • Designbox — for Visual Studio Developer(s) StudioWorks Software, LLC Stable release 2.2.1 (for VS 2005/2008/2010) / August 8, 2010; 14 months ago (2010 08 08) Preview release none … Wikipedia
  • Oxygene (programming language) — Oxygene Developer RemObjects Software Stable release 3.0.21 (August 29, 2009; 2 years ago (2009 08 29)) Influenced by Object Pas … Wikipedia
  • DevForce — Developer(s) IdeaBlade Operating system Microsoft Windows Type Middleware License Proprietary commercial software … Wikipedia
  • DevExpress Reporting — Infobox Software name = Developer Express Reporting [http://www.devexpress.com/xtrareports XtraReports] caption = developer = Developer Express platform = Windows Forms / ASP.NET / .NET / Microsoft SQL Server genre = Business Intelligence,… … Wikipedia
  • Visual WebGui — Infobox Software name = Visual WebGui latest release version = 6.1.1b latest release date = July 15, 2008 genre = Web RAD framework license = GPL / LGPL website = [http://www.visualwebgui.com] | Visual WebGui (VWG) is an open source rapid… … Wikipedia
  • Сравнение систем отслеживания ошибок — Эта страница содержит сравнение как систем отслеживания ошибок так и систем управления проектами. Содержание 1 Системы управления проектами 2 Системы отслеживания ошибок … Википедия
  • Kylix (software) — Kylix is a compiler and integrated development environment formerly sold by Borland but later discontinued. It is a Linux version of the Borland Delphi programming language and C++ Builder, which run under Microsoft Windows. Continuing Delphi s… … Wikipedia
  • OpenEdge Advanced Business Language — (ABL) Developer(s) Progress Software Corporation Stable release 10.2B OpenEdge / December 23, 2009; 21 months ago (2009 12 23) Operating system Cross platform (see below) … Wikipedia
  • Automatic identification and data capture — (AIDC) refers to the methods of automatically identifying objects, collecting data about them, and entering that data directly into computer systems (i.e. without human involvement). Technologies typically considered as part of AIDC include bar… … Wikipedia
  • .NET Compact Framework — The Microsoft .NET Compact Framework (.NET CF) is a version of the .NET Framework that is designed to run on resource constrained mobile/embedded devices such as personal digital assistants (PDAs), mobile phones, factory controllers, set top… … Wikipedia
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

Руководство. Начало работы с конструктором Windows Forms

Конструктор Windows Forms предоставляет множество средств для создания приложений Windows Forms. В этой статье показано, как создать приложение с помощью различных средств, предоставляемых конструктором, включая следующие задачи:

  • Упорядочение элементов управления с помощью оснастки.
  • Выполнение задач конструктора с помощью смарт-тегов.
  • устанавливать поля и отбивки для элементов управления;
  • Упорядочение элементов управления с помощью TableLayoutPanel элемента управления.
  • разделять макет элемента управления с помощью элемента управления SplitContainer;
  • просматривать макет в окне «Структура документа»;
  • размещать элементы управления с отображением размера и сведений о расположении;
  • Задайте значения свойств с помощью окно свойств.

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

Если вы являетесь разработчиком C++ и ищете руководство по созданию приложения Windows, которое включает формы и элементы управления, см. статью Создание приложения MFC на основе форм. Дополнительные обобщенные сведения см. в разделе Обзор программирования Windows на C++.

Создание проекта пользовательского элемента управления

Первым шагом является создание проекта элемента управления DemoCalculator.

Screenshot of the Windows Forms Control Library template in Visual Studio.

  1. Откройте Visual Studio и создайте проект библиотеки элементов управления Windows Forms с помощью шаблона платформа .NET Framework для C# или Visual Basic. Задайте проекту имя DemoCalculatorLib.
  2. Чтобы переименовать файл, в обозревателе решений щелкните правой кнопкой мыши элемент UserControl1.vb или UserControl1.cs, выберите Переименовать и замените имя файла на DemoCalculator.vb или DemoCalculator.cs. Выберите «Да «, когда вам будет предложено переименовать все ссылки на элемент кода UserControl1.

В конструктор Windows Forms отображается поверхность конструктора для элемента управления DemoCalculator. В этом представлении можно графически спроектировать внешний вид элемента управления, выбрав элементы управления и компоненты на панели элементов и поместив их на поверхности конструктора. Дополнительные сведения см. в статье о разновидностях пользовательских элементов управления.

Разработка макета элемента управления

Элемент управления DemoCalculator содержит несколько элементов управления Windows Forms. В этой процедуре вы упорядочены элементы управления с помощью конструктора Windows Forms.

  1. В конструкторе Windows Forms увеличьте размер элемента управления DemoCalculator, выбрав маркер изменения размера в правом нижнем углу и перетащив его вниз и вправо. В правом нижнем углу Visual Studio просмотрите сведения о размере и расположении элементов управления. Задайте элементу управления ширину 500 и высоту 400, наблюдая за сведениями о размере при изменении размера элемента управления.
  2. На панели элементов выберите узел Контейнеры, чтобы открыть его. Выберите элемент управления SplitContainer и перетащите его на поверхность конструктора. Элемент SplitContainer появится на поверхности конструктора элемента управления DemoCalculator.

Совет Размер элемента управления SplitContainer автоматически устанавливается в соответствии с размером элемента управления DemoCalculator. В окне Свойства проверьте свойства, заданные для элемента управления SplitContainer . Найдите свойство Dock. Ему задано значение DockStyle.Fill. Это означает, что размер элемента управления SplitContainer устанавливается в соответствии с границами элемента управления DemoCalculator. Измените размер элемента управления DemoCalculator, чтобы проверить это поведение.

Примечание. Для некоторых элементов управления доступны смарт-теги, упрощающие проектирование. Дополнительные сведения см. в пошаговом руководстве. Выполнение распространенных задач с помощью смарт-тегов в элементах управления Windows Forms.

Заполнение элемента управления

Теперь, когда макет элемента управления настроен, можно добавить в элемент управления DemoCalculator кнопки и экран.

  1. На панели элементов выберите значок элемента управления TextBox . Элемент управления TextBox помещается в первую ячейку элемента управления TableLayoutPanel .
  2. В окне Свойства замените значение свойства ColumnSpan элемента управления TextBox на 5. Элемент управления TextBox переместится в центр своей строки.
  3. Замените значение свойства Anchor элемента управления TextBox на Left , Right . Элемент управления TextBox расширится по горизонтали, заняв все пять столбцов.
  4. Измените значение свойства TextBox элемента управления TextAlign на Right .
  5. В окне Свойства разверните узел свойства Font . Задайте значение 14 для Size и true для Bold у элемента управления TextBox .
  6. Выберите элемент управления TableLayoutPanel .
  7. На панели элементов выберите значок Button . Элемент управления Button разместится в следующей свободной ячейке элемента управления TableLayoutPanel .
  8. На панели элементов выберите Button еще четыре раза, чтобы заполнить вторую строку элемента управления TableLayoutPanel .
  9. Выберите все пять элементов управления Button , удерживая нажатой клавишу SHIFT. Нажмите клавиши CTRL+C, чтобы скопировать элементы управления Button в буфер обмена.
  10. Трижды нажмите сочетание клавиш CTRL+V, чтобы вставить скопированные элементы управления Button в оставшиеся строки элемента управления TableLayoutPanel .
  11. Выберите все 20 элементов управления Button , удерживая нажатой клавишу SHIFT.
  12. В окне Свойства замените значение свойства Dock на Fill . Все элементы управления Button закрепятся в своих ячейках.
  13. В окне Свойства разверните узел свойства Margin . Для All задайте значение 5. Всем элементам управления Button задается меньший размер, чтобы увеличить поля между ними.
  14. Выберите button10 и button20, после чего нажмите клавишу DELETE, чтобы удалить их из макета.
  15. Выберите button5 и button15, после чего замените значение их свойства RowSpan на 2. Эти кнопки представляют кнопки Clear и = button for the DemoCalculator control.

Использование окна структуры документа

Если в элементе управления или форме присутствует несколько элементов управления, перемещаться по макету удобнее с помощью окна «Структура документа».

  1. В строке меню выберите Вид>Другие окна>Структура документа. В этом окне структура элемента управления DemoCalculator и его составных элементов управления представлена в виде дерева. Дочерние элементы управления контейнерных элементов управления, таких как SplitContainer , отображаются в виде подузлов дерева. Вы также можете переименовать элементы управления с помощью окна «Структура документа».
  2. В окне Структура документа щелкните правой кнопкой мыши элемент button1, чтобы выбрать его, после чего щелкните Переименовать. Замените его имя на sevenButton.
  3. В окне Структура документа замените имена элементов управления Button , заданные конструктором, на имена для рабочей среды согласно следующему списку:
    • button1 на sevenButton;
    • button2 на eightButton;
    • button3 на nineButton;
    • button4 на divisionButton;
    • button5 на clearButton;
    • button6 на fourButton;
    • button7 на fiveButton;
    • button8 на sixButton;
    • button9 на multiplicationButton;
    • button11 на oneButton;
    • button12 на twoButton;
    • button13 на threeButton;
    • button14 на subtractionButton;
    • button15 на equalsButton;
    • button16 на zeroButton;
    • button17 на changeSignButton;
    • button18 на decimalButton;
    • button19 на additionButton;
  4. С помощью окон Структура документа и Свойства измените значения свойства Text для каждого имени элемента управления Button согласно следующему списку:
    • для элемента управления sevenButton замените свойство текста на 7;
    • для элемента управления eightButton замените свойство текста на 8;
    • для элемента управления nineButton замените свойство текста на 9;
    • для элемента управления divisionButton замените свойство текста на / (косая черта);
    • для элемента управления clearButton замените свойство текста на Clear;
    • для элемента управления fourButton замените свойство текста на 4;
    • для элемента управления fiveButton замените свойство текста на 5;
    • для элемента управления sixButton замените свойство текста на 6;
    • для элемента управления multiplicationButton замените свойство текста на * (звездочка);
    • для элемента управления oneButton замените свойство текста на 1;
    • для элемента управления twoButton замените свойство текста на 2;
    • для элемента управления threeButton замените свойство текста на 3;
    • для элемента управления subtractionButton замените свойство текста на (дефис);
    • для элемента управления equalsButton замените свойство текста на = (знак равенства);
    • для элемента управления zeroButton замените свойство текста на 0;
    • для элемента управления changeSignButton замените свойство текста на +/-;
    • для элемента управления decimalButton замените свойство текста на . (точка);
    • для элемента управления additionButton замените свойство текста на + (знак «плюс»);
  5. На поверхности конструктора выберите все элементы управления Button , удерживая нажатой клавишу SHIFT.
  6. В окне Свойства разверните узел свойства Font . Задайте значение 14 для Size и true для Bold у всех элементов управления Button .

Этот набор инструкций завершает проектирование элемента управления DemoCalculator. Остается только добавить логику калькулятора.

Добавление обработчиков событий

Кнопки в элементе управления DemoCalculator имеют обработчики событий, которые можно использовать для реализации большей части логики калькулятора. Конструктор Windows Forms позволяет реализовать заглушки всех обработчиков событий для всех кнопок одним выбором.

  1. На поверхности конструктора выберите все элементы управления Button , удерживая нажатой клавишу SHIFT.
  2. Выберите один из элементов управления Button . В редакторе кода откроются обработчики событий, созданные конструктором.

Тестирование элемента управления

Поскольку элемент управления DemoCalculator наследуется от класса UserControl, его поведение можно проверить с помощью Контейнера для тестирования пользовательских элементов управления. Дополнительные сведения см. в статье «Практическое руководство. Тестирование поведения во время выполнения userControl».

  1. Нажмите клавишу F5, чтобы собрать и запустить элемент управления DemoCalculator в Контейнере для тестирования пользовательских элементов управления.
  2. Выберите границу между панелями SplitContainer и перетащите ее влево и вправо. Размеры элемента TableLayoutPanel и всех его дочерних элементов управления будут изменяться в соответствии с доступным пространством.
  3. После завершения тестирования элемента управления нажмите кнопку «Закрыть«.

Использование элемента управления в форме

Элемент управления DemoCalculator можно использовать в других составных элементах управления или в форме. Ниже описано, как это сделать.

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

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

  1. Создайте проект Приложение Windows Forms с именем DemoCalculatorTest.
  2. В Обозревателе решений щелкните правой кнопкой мыши проект DemoCalculatorTest и выберите Добавить>Ссылка на проект, чтобы открыть диалоговое окно Диспетчер ссылок.
  3. Перейдите на вкладку Проекты и выберите проект DemoCalculatorLib, чтобы добавить ссылку на тестовый проект.
  4. В обозревателе решений щелкните правой кнопкой мыши DemoCalculatorTest и выберите пункт Назначить запускаемым проектом.
  5. В конструкторе Windows Forms увеличьте размер формы примерно до 700 x 500.

Использование элемента управления в макете формы

Чтобы использовать элемент управления DemoCalculator в приложении, его необходимо поместить в форму.

  1. На панели элементов разверните узел Компоненты DemoCalculatorLib.
  2. Перетащите элемент управления DemoCalculator с панели элементов в форму. Переместите элемент управления в левый верхний угол формы. Когда элемент управления близок к границам формы, отрезки отображаются. Линии привязки указывают расстояние свойства Padding формы и свойства Margin элемента управления. Поместите элемент управления в расположение, указанное линиями привязки. Дополнительные сведения см. в пошаговом руководстве. Упорядочение элементов управления с помощью линий оснастки.
  3. Перетащите элемент управления Button с панели элементов и поместите его в форму.
  4. Перемещайте элемент управления Button по элементу управления DemoCalculator, чтобы определить, где отображаются линии привязки. Вы можете точно и легко выровнять элементы управления с помощью этой функции. По завершении удалите элемент управления Button .
  5. Щелкните правой кнопкой мыши элемент управления DemoCalculator и выберите пункт Свойства.
  6. Замените значение свойства Dock на Fill .
  7. Выберите форму, а затем разверните узел свойства Padding . Замените значение Все на 20. Размер элемента управления DemoCalculator уменьшится в соответствии с новым значением формы Padding .
  8. Измените размер формы, перетаскивая различные маркеры изменения размера в разные положения. Обратите внимание на то, как размер элемента управления DemoCalculator пропорционально изменяется.

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

В этой статье было показано, как создать пользовательский интерфейс для простого калькулятора. Чтобы продолжить, вы можете расширить свою функциональность, реализуя логику калькулятора, а затем опубликовать приложение с помощью ClickOnce. Кроме того, перейдите к другому руководству, в котором вы создаете средство просмотра рисунков с помощью Windows Forms.

См. также

  • Элементы управления Windows Forms
  • Специальные возможности для элементов управления в Windows Forms
  • Публикация с помощью ClickOnce

Windows Forms: Современная модель программирования для создания GUI приложений

Чтобы создать GUI приложения в Microsoft .NET нужно использовать Windows Forms. Windows Forms — новый стиль построения приложения на базе классов .NET Framework class library. Они имеют собственную модель программирования, которая более совершеннее, чем модели, основанные на Win32 API или MFC, и они выполняются в управляемой среде .NET Common Language Runtime (CLR). Эта статья дает представление о том, что такое Windows Forms, рассматривая ее от модели программирования до Microsoft Intermediate Language и JIT-транслятора.

Вы уже много слышали, что Microsoft .NET — новая платформа, которая основана на Windows. Это целая новая парадигма программирования, которая изменит путь, которым вы сейчас думаете о написании программ для Windows. Она реализована на библиотеке классов .NET Framework class library и содержит более единую модель программирования, улучшенную защиту и более богатые возможности для написания полнофункциональных веб-приложений. И это только начало.

Windows Forms — одна из наиболее интересных возможностей Microsoft .NET. Если вы знакомы с MFC (или Windows API), то Windows Forms хорошее начало для работы с .NET Framework class library, потому что она позволяет писать традиционные GUI приложения с окнами, формами и т.п. вещами. Однажды, начав работать с Windows Forms вы сможете быстро понять .NET Framework.

Главная выгода от написания Windows-приложений с использованием Windows Forms — это то, что Windows Forms гомогенизируют (создают более однородную (гомогенную) структуру) программную модель и устраняют многие ошибки и противоречия от использования Windows API. Например, каждый опытный программист под Windows знает, что некоторые стили окна могут применяться только к окну, когда оно уже создано. Windows Forms в значительной степени устраняют такое противоречие. Если вы хотите существующему окну задать стиль, который может быть присвоен только в момент создания окна, то Windows Forms спокойно уничтожит окно и вновь создаст его с указанным стилем. Кроме того, .NET Framework class library намного более богаче, чем Windows API, и когда вы будете писать приложения, используя Windows Forms, вы получите в распоряжение больше возможностей. Написание приложения с использованием Windows Forms потребует меньшего количества кода, чем приложения, которые используют Windows API или MFC.

Другая выгода от Windows Forms — вы используете тот же самый API, независимо от языка программирования, который вы выбрали. В прошлом, выбор языка программирования управлял выбором API. Если вы программировали в Visual Basic, вы использовали один API (реализованный на языке Visual Basic), в то время как программисты C использовали Win32 API, а программисты C++, вообще говоря, использовали MFC. MFC-программисту было трудно переключиться на Visual Basic и наоборот. Но теперь такого больше нет. Все приложения, которые используют Windows Forms, используют один API из .NET Framework class library. Знание одного API достаточно позволит программисту писать приложения фактически на любом языке, который он выберет.

Windows Forms ни как не меньше, чем современная модель программирования для GUI приложений. В отличие от модели программирования Win32, в которой многое идет еще от Windows 1.0, новая модель была разработана с учетом всех современных требований. Цель этой статьи состоит в том, чтобы познакомить читателя с моделью программирования Windows Forms. Чтобы компилировать и выполнять примеры кода, приведенного далее, на вашем компьютере должнен быть установлен пакет Microsoft .NET Framework SDK (.NET Framework SDK Beta 1 доступен на сайте Microsoft).

Модель программирования Windows Forms

В Windows Forms термин «форма» — синоним окна верхнего уровня. Главное окно приложения — форма. Любые другие окна верхнего уровня, которые имеет приложение — также формы. Окна диалога также считаются формами. Несмотря на название, приложения, использующие Windows Forms, не выглядят как формы. Подобно традиционным Windows-приложениям приложения осуществляют полный контроль над событиями в собственных окнах.

Программисты видят Microsoft .NET через линзу .NET Framework class library. Представьте MFC на порядок больше и вы получите точную картину о ширине и глубине .NET Framework class library. Чтобы облегчить противоречия в обозначениях и придать организацию многим сотням классов, .NET Framework class library разбита на иерархические разделы по именам. Корневой раздел, System, определяет фундаментальные типы данных, используемые всеми приложениями .NET.

Приложения, использующие Windows Forms используют классы System.WinForms. Этот раздел включает такие классы, как Form, который моделирует поведение окон или форм; Menu, который представляет меню; Clipboard, который дает возможность приложениям Windows Forms использовать буфер обмена. Он также содержит многочисленные классы, предоставляющие средства управления, например: Button, TextBox, ListView, MonthCalendar и т.д. Эти классы могут быть включены в приложение либо с использованием только имени класса, либо с использованием полного имени, например: System.WinForms.Button.

В основе почти каждого приложения, написанного с применением Windows Forms, — производный класс от System.WinForms.Form. Образец этого класса представляет главное окно приложения. System.WinForms.Form имеет множество свойств и методов, которые имеют богатый программный интерфейс к формам. Хотите знать размеры клиентской области формы? В Windows вы вызвали бы функцию API GetClientRect. В Windows Forms нужно использовать свойства ClientRectangle или ClientSize.

Приложения, основанные на Windows Forms, которые используют кнопки, списки и другие типы компонентов Windows, используют классы управления System.WinForms, значительно упрощающие программирование управления. Хотите создать стилизованную кнопку с изображением в виде фона? Нет проблем. Включите требуемое изображение в объект System.Drawing.Bitmap и назначьте его свойству кнопки BackgroundImage. Как насчет управления цветом? Вы когда-либо пробовали настраивать цвет фона текстового поля? В Windows Forms это просто: нужно просто присвоить цвет свойству BackColor, все отстальное система сделает сама.

Другой важный «строительный» блок приложения, который использует Windows Forms — класс System.WinForms по имени Application. Этот класс содержит статический метод Run, который загружает приложение и отображает окно.

Вы скажете: если приложения, которые являются Windows Forms, не обрабатывают сообщения, как они отвечают на пользовательский ввод или знают когда рисовать? Много классов имеют виртуальные методы, которые можно переопределить. Например, System.WinForms.Form содержит виртуальный метод OnPaint, который вызывается когда клиентская область формы нуждается в обновлении. OnPaint — один из многих виртуальных методов, который можно переопределить в производном классе для формирования интерактивных форм.

Другая важная грань модели программирования Windows Forms — механизм, который формы используют для ответа на ввод в меню, средств управления и других элементов GUI приложения. Традиционные Windows-приложения обрабатывают сообщения WM_COMMAND и WM_NOTIFY используя события процесса Windows Forms. В C# и на других языках, которые поддерживают .NET Common Language Runtime (CLR), события — члены типа первого класса наравне с методами, полями и свойствами. Фактически все управляющие классы (control classes) Windows Forms (а также и многие неуправляющие классы) создают события. Например, кнопка (экземпляр System.WinForms.Button) после нажатия создает событие Click. Форма, которая должна ответить на нажатие кнопки может использовать следующий код, чтобы соединить кнопку на обработчиком события Click:

MyButton.Click += new EventHandler (OnButtonClicked); . private void OnButtonClicked (object sender, EventArgs e)

EventHandler — специальный обработчик событий, который выполняет метод OnButtonClicked когда MyButton создает событие Click. Первый параметр OnButtonClicked идентифицирует объект, который вызвал событие. Второй параметр в основном бессмысленен для события Click, но используется некоторым другие типами событий, чтобы передать дополнительную информацию.

Приложение «Hello World» с Windows Forms

Самый простой способ начать изучение новой платформы — создание приложения «Hello World». В Листинге 1 показана версия, созданная при помощи Windows Forms. Все примеры в этой статье написаны на C#, но вы можете писать приложения Windows Forms на любом языке, для которого есть компилятор .NET. Сегодня это: C#, Visual Basic, JScript и C++.

using System; using System.WinForms; using System.Drawing; public class MyForm : Form < public MyForm () < Text = "Windows Forms Demo"; >protected override void OnPaint (PaintEventArgs e) < e.Graphics.DrawString ("Hello, world", Font, new SolidBrush (Color.Black), ClientRectangle); >public static void Main (string[] args) < Application.Run (new MyForm ()); >>

Начнем сначала. Слово «using» вверху файла позволяют сослаться на классы в пакетах System, System.WinForms и System.Drawing. Например,

using System.WinForms;
public class MyForm : System.WinForms.Form
public class MyForm : Form

В приложении, использующем Windows Forms, каждое окно — или форма — представлено экземпляром класса, производного от System.WinForms.Form (Листинг 1 — класс MyForm). Конструктор MyForm устанавливает текст заголовка формы «Windows Forms Demo» используя свойство Text. Text — одно из более чем 100 свойств, которые форма наследует от System.WinForms.Form, но пока единственное, в котором вы нуждаетесь.

Как вы знаете, окна получают сообщения WM_PAINT и большинство перерисовок экрана выполнено в ответ на эти сообщения. В Windows Forms эквивалент сообщения WM_PAINT — виртуальный метод по имени OnPaint. Производный класс формы может переопределить этот метод в случае надобности выполнять собственную перерисовку в ответ на сообщения WM_PAINT.

Обратите внимание на ключевое слово в Листинге 1, которое компилятор C# интерпретирует как подтверждение, что вы хотите переопределить виртуальный метод, унаследованный от базового класса. Перопределенный OnPaint записывает «Hello, world» в клиентской области формы. OnPaint вызывает объект PaintEventArgs (System.WinForms.PaintEventArgs), который содержит свойства Graphics и ClipRectangle. Свойство Graphics ссылается к объекту Graphics (System.Drawing.Graphics), который является эквивалентом контекста устройства (device context) в Windows Forms. ClipRectangle производное объекта Rectangle (System.Drawing.Rectangle), который описывает какая часть формы является недопустимой.

Метод OnPaint из MyForm использует Graphics.DrawString, чтобы выполнить вывод на экран. Первый параметр DrawString — непосредственно само сообщение (строка) «Hello, world». Второй — объект Font (System.Drawing.Font), который описывает шрифт для вывода текста. MyForm.OnPaint использует шрифт формы (которой установлен в свойстве Font формы). Третий параметр — Brush (System.Drawing.Brush) — объектное определение цвета текста. Четвертый и заключительный параметр — прямоугольник области, куда требуется вписать текст.

Заключительная часть MyForm — статический метод Main. Main — точка входа в приложение. Каждое приложение .NET должно иметь этот метод. Main может быть объявлен любым из следующих способов:

public static void Main () public static int Main () public static void Main (string[] args) public static int Main (string[] args)

Параметр args метода Main — строковый массив параметров командной строки (задаваемых при вызове программы). Элемент args[0] хранит первый параметр командной строки, args[1] — второй и т.д. Как правило, в каждом приложении метод Main выполняется только однажды (компилятор Microsoft C# допускает использование ключа /main, указывающего в каком классе содержится метод Main, если приложение имеет несколько классов с методами Main). Main может находиться в любом классе, определенном в приложении.

Отображение нашей формы на экране — простой пример выполнения MyForm и передачи действия Application.Run. Application — другой класс, определенный в System.WinForms. Метод Run создает форму, отображает ее на экране и обрабатывает сообщения к ней. Следующая инструкция в Листинге 1

Application.Run (new MyForm ());

обрабатывает MyForm и показывает форму.

Сохраните текст программного кода (Листинг 1) в файле Hello.cs и откомпилируйте его. Чтобы это сделать, откройте окно командной строки, перейдите в каталог файла Hello.cs и введите:

csc /target:winexe /out:Hello.exe /reference:System.dll /reference:System.WinForms.dll /reference:System.Drawing.dll /reference:Microsoft.Win32.Interop.dll Hello.cs

Команда csc вызывает компилятор Microsoft C#. «Hello.cs» указывает на файл, который требуется откомпилировать. Ключ «/target:winexe» сообщает компилятору, что нужно создать GUI-приложение для Windows, а «/out:Hello.exe» задает имя файла программы (этот ключ можно опустить, т.к. в данном случае по умолчанию все равно будет создан Hello.exe, т.к. CS-файл назван Hello.cs). Ключи «/reference» указывают ссылки на внешние классы, например, для System.WinForms.Form и System.Drawing.Size. Для краткости допускается заменять «/target» и «/reference» на «/t» и «/r».

Hello.exe не обычный EXE-файл, это .NET-программа, содержащая следующие важные элементы:

  • Microsoft Intermediate Language (MSIL), сгенерированный при помощи C#
  • Метаданные, описывающие типы (классы), определенные в приложении, и типы (например, System.WinForms.Form), на которые ссылается приложение, находящиеся в другом месте (например, в MsCorLib.dll и System.WinForms.dll)
  • Декларация, описывающая требуемые файлы для сборки приложения

В языке .NET, сборка — это коллекция из одного или более файлов, создающих модуль. Наша сборка содержит только один файл — Hello.exe — и этот факт отмечен в декларации внутри выполнимой программы. Декларация физически сохранена как часть метаданных. Каждая управляемая выполнимая программа — это есть любой PE-файл, который содержит MSIL — часть сборки и каждая управляемая выполнимая программа имеет метаданные внутри. Один из файлов в .NET-сборке содержит декларацию идентификации файлов, которые должны быть включены при сборке и общедоступные типы. Компилятор C# производит всю необходимую инфраструктуру.

Теперь когда вы откомпилировали Hello.exe, можете набрать в командной строке:

Hello

Посмотрите на рис.1, чтобы увидеть результат работы нашей программы.

Рис.1. Приложение «Hello, World»

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

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