Создание приложений для Windows с помощью Visual Studio

Обновлено: 06.07.2024

Есть также прямые онлайн-мероприятия, интерактивный контент, материалы для подготовки к сертификации и многое другое.

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

Программно форма определяется путем производного класса от класса Form (определенного в System.Windows.Forms). Класс Form содержит ноу-хау для отображения пустой формы, включая ее строку заголовка и другие удобства, которые мы ожидаем от формы Windows. Добавление членов в новый класс и переопределение членов, унаследованных от класса Form, добавляет к новой форме визуальные элементы и поведение.

Выберите «Файл» → «Создать» → «Проект». Появится диалоговое окно «Новый проект», как показано на рис. 4-1.

Диалоговое окно

Рисунок 4-1. Диалоговое окно "Новый проект"

Выберите «Проекты Visual Basic» на панели «Типы проектов» в левой части диалогового окна.

Выберите Приложение Windows на панели Шаблоны в правой части диалогового окна.

Введите имя в текстовом поле Имя.

Ширина конструктора Windows Forms

Рисунок 4-2. Конструктор Windows Forms

Здесь показано определение класса Form1, который наследуется от класса Form. Конструктор Windows Forms также создает много шаблонного кода, который не должен изменяться разработчиком. По умолчанию он скрывает этот код от просмотра. Чтобы увидеть код, щелкните символ «+», который появляется слева от строки, которая говорит «Код, сгенерированный конструктором форм Windows». При этом открывается код, показанный в примере 4-1.

Пример 4-1. Созданный дизайнером Windows Forms код для пустой формы

Конструктор Windows Forms автоматически генерирует код для четырех членов класса:

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

Метод Dispose позволяет объекту избавиться от любых дорогостоящих ресурсов. В этом случае он вызывает метод Dispose базового класса, чтобы дать ему возможность высвободить любые дорогостоящие ресурсы, которые он может удерживать, а затем вызывает метод Dispose поля компонентов. (Подробнее о поле компонентов см. следующий пункт.) Это, в свою очередь, вызывает методы Dispose для каждого отдельного компонента в коллекции. Если производный класс использует какие-либо дорогостоящие ресурсы, разработчик должен добавить сюда код для их освобождения. Когда форма больше не нужна, весь код, использующий форму, должен вызывать метод Dispose формы. После создания метода Dispose дизайнер больше его не трогает.

Код в этом методе не должен изменяться или добавляться разработчиком каким-либо образом. Конструктор Windows Forms автоматически обновляет его по мере необходимости. Когда элементы управления добавляются в форму с помощью конструктора, в этот метод добавляется код для создания экземпляров элементов управления во время выполнения и установки их начальных свойств. Обратите также внимание на то, что в примере 4.1 в этом методе инициализируются свойства самой формы (такие как Text и Name).

Следующие шаги в разработке формы – дать файлу кода осмысленное имя и задать некоторые свойства формы, например текст в строке заголовка. Чтобы изменить имя файла кода формы, щелкните правой кнопкой мыши имя файла в окне обозревателя решений и выберите «Переименовать». Если вы следуете этому примеру, введите HelloWindows.vb в качестве имени файла.

Изменение имени файла не меняет имя класса. Чтобы изменить имя класса, щелкните правой кнопкой мыши форму в конструкторе и выберите «Свойства». В окне «Свойства» измените значение свойства «Имя». В этом примере измените имя на «HelloWindows».

Затем дважды щелкните элемент управления "Кнопка" на панели инструментов, чтобы добавить элемент управления "Кнопка" в форму. Используйте окно «Свойства», чтобы изменить свойство «Имя» кнопки на «OkButton», а свойство «Текст» — на «ОК».

Наконец, расположите элементы управления по желанию, измените размер элемента управления Label и формы так, чтобы они были привлекательными, и установите для свойства FormBorderStyle формы значение «FixedToolWindow».Полученная форма должна выглядеть примерно так, как показано на рис. 4-3.

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

Рисунок 4-3. Форма с элементами управления

Нажмите клавишу F5, чтобы построить и запустить программу. Результат должен выглядеть примерно так, как показано на рис. 4-4.

Здравствуйте, Windows!, as созданный дизайнером Windows Forms

Рисунок 4-4. Привет, Windows!, созданный конструктором Windows Forms

Код, сгенерированный дизайнером, показан в примере 4-2.

Пример 4-2. Привет, Виндовс! код, сгенерированный конструктором Windows Forms

Обратите внимание, что дизайнер внес следующие изменения в код:

В класс были добавлены два поля Friend, по одному для каждого элемента управления, добавленного в форму:

Ключевое слово Friend делает элементы видимыми для другого кода в проекте, но скрывает их от кода, работающего в других сборках.

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

Обратите внимание, что имена полей совпадают с именами элементов управления, как показано в окне свойств.

К методу InitializeComponent был добавлен код для создания экземпляров двух элементов управления и назначения их ссылок полям-членам:

К методу InitializeComponent был добавлен код для установки различных свойств метки, кнопки и формы. Некоторые из этих назначений напрямую соответствуют настройкам, заданным в окне "Свойства", тогда как другие являются неявным результатом других действий, выполняемых в конструкторе (например, изменение размера формы).

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

Привет, Windows! Приложение, созданное на данный момент, имеет кнопку OK, но приложение еще не реагирует на нажатия кнопок. Чтобы добавить обработчик события Click для кнопки OK, дважды щелкните кнопку в конструкторе Windows Forms. В ответ дизайнер переключается на представление кода формы и вставляет подпрограмму, которая обрабатывает событие Click (т. е. она будет вызываться, когда пользователь работающего приложения нажимает кнопку «ОК»). Подпрограмма, которую создает дизайнер, выглядит так (обратите внимание, что я добавил символ продолжения строки для печати в этой книге):

Тогда можно добавить тело подпрограммы. Это была бы вероятная реализация для этого обработчика событий:

Альтернативный способ добавить обработчик событий — использовать раскрывающиеся списки в верхней части окна просмотра кода формы. В левом раскрывающемся списке выберите объект, для которого вы хотите добавить обработчик событий. Затем в правом выпадающем списке выберите нужное событие. См. рис. 4-5.

Добавление обработчика событий с помощью раскрывающиеся списки просмотра кода

Рисунок 4-5. Добавление обработчика событий с помощью раскрывающихся списков представления кода

Обработчики событий можно вводить непосредственно в код формы, если вы знаете правильную подпись для обработчика. Сигнатуры обработчиков событий задокументированы в библиотеке Microsoft Developer Network (MSDN).

Создание формы в коде

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

Определить класс, производный от класса Form (определенный в пространстве имен System.Windows.Forms). Если форма должна быть формой запуска для приложения, включите общедоступный общий метод Main. Например:

Объявите элемент данных для каждого элемента управления, который должен отображаться в форме. Если вы хотите обрабатывать события из элемента управления, используйте в объявлении ключевое слово WithEvents. Например:

Видимость (Частная, Друг, Защищенная или Общедоступная) этих элементов данных — это вопрос дизайна, который зависит от проекта и предпочтений разработчика. Я предпочитаю сделать все элементы данных закрытыми. Если коду, внешнему по отношению к классу, необходимо изменить данные, хранящиеся в этих членах, для этой цели можно добавить специальные методы доступа. Это предотвращает влияние внутренних изменений дизайна на внешних пользователей класса.

Объявите конструктор. Выполните следующие операции в конструкторе:

Создайте экземпляр каждого элемента управления.

Установите свойства для каждого элемента управления и формы.

Добавить все элементы управления в коллекцию элементов управления формы.

Добавлен оператор Imports для предоставления доступа к типам в пространстве имен System.Drawing, таким как Point и Size.

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

Определите обработчики событий непосредственно в коде для любых событий, которые вы хотите обработать. Например:

Полный код автономного приложения Windows Forms показан в примере 4-3. Скомпилируйте его из командной строки с помощью этой команды:

(Обратите внимание, что команду следует вводить в одну строку.)

Пример 4-3. Привет, Виндовс! код, созданный вне Visual Studio

Члены O’Reilly проходят онлайн-обучение в режиме реального времени, а также получают книги, видео и цифровой контент от более чем 200 издателей.

В этом руководстве вы создадите приложение Visual Basic с пользовательским интерфейсом Windows Forms. Интегрированная среда разработки (IDE) Visual Studio включает в себя все инструменты, необходимые для создания приложения Windows Forms.

В этом руководстве вы узнаете, как:

  • Создать проект
  • Добавить кнопку в форму
  • Добавить ярлык и код
  • Запустите приложение

Предпосылки

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

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

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

Создать проект

Создайте проект приложения Visual Basic. Тип проекта поставляется со всеми файлами шаблонов, которые вам понадобятся, еще до того, как вы что-либо добавили.

Откройте Visual Studio 2017.

В верхнем меню выберите «Файл» > «Создать» > «Проект».

 На снимке экрана показана рабочая нагрузка .NET Core, выбранная в установщике Visual Studio». /><br /></p>
<p>Откройте Visual Studio.</p>
<p>В стартовом окне выберите Создать новый проект.</p>
<p><img class=

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

На снимке экрана показано окно

Скриншот показывает

 На снимке экрана показана рабочая нагрузка .NET Core, выбранная в установщике Visual Studio». /><br /></p>
<p>После этого выберите «Изменить» в установщике Visual Studio. Вам может быть предложено сохранить вашу работу.</p>
<p>В окне HelloWorld в качестве имени проекта. Затем выберите Создать.

Снимок экрана показывает окно настройки нового проекта с введенным именем HelloWorld.

Visual Studio открывает ваш новый проект.

Откройте Visual Studio.

В стартовом окне выберите Создать новый проект.

На снимке экрана показано начальное окно Visual Studio 2022 с выбранным параметром

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

На снимке экрана показано окно

Скриншот показывает

 На снимке экрана показана рабочая нагрузка .NET Core, выбранная в установщике Visual Studio». /><br /></p>
<p>После этого выберите «Изменить» в установщике Visual Studio. Вам может быть предложено сохранить вашу работу.</p>
<p>В окне HelloWorld в качестве имени проекта. Затем выберите Создать.

Снимок экрана показывает окно настройки нового проекта с введенным именем HelloWorld.

Visual Studio открывает ваш новый проект.

Добавить кнопку в форму

После того как вы выберете шаблон проекта Visual Basic и назовете файл, Visual Studio откроет для вас форму. Форма — это пользовательский интерфейс Windows. Вы создадите приложение "Hello World", добавив в форму элементы управления.

В левой части интегрированной среды разработки Visual Studio выберите вкладку Панель инструментов. Если вы его не видите, выберите «Просмотр» > «Панель инструментов» в строке меню или Ctrl+Alt+X.

На снимке экрана показана вкладка

При желании выберите значок Закрепить, чтобы закрепить окно панели инструментов.

Выберите элемент управления "Кнопка" и перетащите его на форму.

В разделе "Внешний вид" окна "Свойства" в поле "Текст" введите Щелкните это и нажмите клавишу ВВОД.

Если вы не видите окно свойств, вы можете открыть его из строки меню. Выберите Вид > Окно свойств или нажмите F4.

В разделе "Дизайн" окна "Свойства" измените имя с Button1 на btnClickThis и нажмите клавишу ВВОД.

Если вы расположили список в алфавитном порядке в окне свойств, Button1 вместо этого появится в разделе (DataBindings).

Добавить ярлык и код

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

Выберите элемент управления Label в окне Toolbox, а затем перетащите его на форму. Поместите его под кнопкой «Нажмите эту кнопку».

В разделе "Дизайн" или (DataBindings) окна "Свойства" измените имя Label1 на lblHelloWorld и нажмите клавишу ВВОД.

В окне Form1.vb [Дизайн] дважды нажмите кнопку Нажмите эту кнопку, чтобы открыть окно Form1.vb.

Еще один вариант — развернуть файл Form1.vb в обозревателе решений, а затем выбрать Form1.

В окне Form1.vb между строками Private Sub и End Sub введите lblHelloWorld.Text = "Hello World!", как показано на следующем снимке экрана:

На снимке экрана показан класс a на вкладке Form1.vs, куда вы можете добавить код Visual Basic.

Запустите приложение

Ваше приложение готово к сборке и запуску.

Выберите «Пуск», чтобы запустить приложение.

На снимке экрана показана кнопка

Происходит несколько вещей. В интегрированной среде разработки Visual Studio открывается окно средств диагностики и окно вывода. За пределами IDE появляется диалоговое окно Form1. Он включает в себя кнопку «Нажмите эту кнопку» и текст с надписью Label1.

Нажмите кнопку Нажмите эту кнопку в диалоговом окне Form1.

На снимке экрана показано диалоговое окно под названием Форма 1, в котором отображается текст Hello World!

Текст Label1 изменится на Hello World!.

Универсальный Windows Платформа

Игры DirectX

Современная графика

Создавайте высокопроизводительные 2D- и 3D-игры, используя весь потенциал графического оборудования с помощью новых инноваций DirectX 12 — ведущей графической платформы в отрасли.

Непрерывное тестирование в DevOps

Windows Presentation Foundation (WPF)

Многофункциональная платформа для презентаций

Windows Presentation Foundation (WPF) и XAML объединяются в многофункциональную систему представления для создания настольных приложений Windows с потрясающим визуальным интерфейсом, включающим пользовательский интерфейс, мультимедиа и сложные бизнес-модели.Быстро разрабатывайте линейку бизнес-приложений корпоративного класса с полным набором функций, таких как элементы управления, привязка данных, анимация, стили, шаблоны и многое другое.

Настольные приложения Win32

Производительность на предприятии

Добавьтесь к 16 миллионам существующих настольных приложений Win32. Разрабатывайте приложения с помощью MFC, Windows Forms или Windows Presentation Foundation (WPF). Используйте мощные инструменты отладки и диагностики Visual Studio для создания высококачественных оптимизированных приложений, расширяющих возможности пользователей.

Исследовательское тестирование

Яркая экосистема

Яркая экосистема

Открытый исходный код, элементы управления, платформы и инструменты

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

Azure DevOps

Инструменты для agile-команд

Храните код и совместно работайте над ним в любом месте с помощью частных командных проектов, поддерживаемых системой контроля версий. Фиксируйте, расставляйте приоритеты и отслеживайте работу с помощью журналов невыполненной работы и настраиваемых канбан-досок. Выявляйте проблемы с качеством на раннем этапе с помощью сборок с непрерывной интеграцией (CI), которые автоматически компилируют и тестируют ваше приложение для Windows после любого изменения кода.



В прошлом году с выпуском Windows 10 Anniversary Update мы представили Desktop Bridge, чтобы предоставить классическим приложениям путь для модернизации с помощью универсальной платформы Windows и для распространения через Магазин Windows и Магазин Microsoft. для бизнеса на все ПК с Windows 10, включая устройства с конфигурацией Windows 10 S.

Основным инструментом разработчика в то время был конвертер приложений для настольных ПК, который преобразует ваш текущий установщик приложения в пакет приложения для Windows (файл .appx), который можно отправить в Магазин Windows или развернуть с помощью вашего механизма распространения выбор. Благодаря обновлению 4 для Visual Studio 2017 у нас теперь есть отличная поддержка непосредственно в Visual Studio для ваших проектов приложений Windows для настольных компьютеров (WPF, Winforms, Win32 и т. д.). С помощью новых инструментов вы теперь можете создавать, настраивать, развертывать, тестировать и отлаживать приложения Desktop Bridge по мере их разработки в VS, просто нажав F5!


Шаг 1. Добавьте в решение проект упаковки приложений для Windows

Прежде чем мы начнем, нам нужно убедиться, что наш проект настольного приложения загружен в Visual Studio 2017 и строится без ошибок. Затем на следующем шаге мы хотим упаковать наше приложение в виде пакета приложения Windows (файл .appx), чтобы наше приложение Winforms могло использовать все те же функции развертывания приложений Windows 10, которые доступны для приложений UWP: чистая установка и удаление, бесшовная обновления, распространение в магазине и многое другое. Для этого мы воспользуемся преимуществами новых функций инструментов, представленных в обновлении 4 для Visual Studio 2017. Мы добавляем в наше решение новый проект типа «Проект упаковки приложений Windows»:


Теперь нам нужно указать наши минимальные/целевые версии…


… и сообщите проекту упаковки, какие выходные данные проекта нужно включить в пакет. Для этого мы щелкаем правой кнопкой мыши узел «Приложения» и устанавливаем ссылку на наш проект Winforms — готово!


Важно! Выберите проект «DistributionPackage» в качестве запускаемого проекта. Теперь нажмите F5 и посмотрите, как ваше приложение упаковывается, развертывается и запускается как приложение Desktop Bridge. Вы можете начать тестирование и отладку в этом новом контексте выполнения. Если вы установите проект Winforms в качестве запускаемого проекта и нажмете F5, вы все равно сможете тестировать и отлаживать неупакованную версию своего приложения

Шаг 2. Настройка приложения для выпуска Windows Store

Наше приложение уже работает как приложение Desktop Bridge, и мы успешно протестировали и отладили его в этой конфигурации. Далее нам просто нужно внести последние штрихи в пакет, чтобы он хорошо интегрировался с оболочкой Windows 10 (плитки, значки и т. д.) и убедиться, что он соответствует требованиям отправки в Магазин.Прежде всего, нам нужно заменить стандартные визуальные ресурсы, которые поставляются с шаблоном проекта, нашими реальными ресурсами для конкретного приложения. Теперь это очень просто сделать в Visual Studio 2017 с помощью Visual Assets Manager в редакторе манифеста пакета:


Чтобы подготовиться к отправке в Магазин, нам необходимо создать приложение в Центре разработки для Windows и зарезервировать имя нашего приложения, предоставить снимки экрана для витрины магазина, установить цену, возрастные ограничения и т. д. Если вы не планируете распространять через Магазин Windows, вы можете пропустить этот шаг.


Последнее, что нам нужно сделать, прежде чем мы сможем опубликовать наше приложение, — это создать пакет пакетов, готовый к развертыванию и совместимый с Store. Этот пакет может содержать двоичные файлы для разных архитектур, ресурсы для разных локалей, а также символы для наших двоичных файлов, чтобы мы могли позже понять любые отчеты о сбоях в Dev Center или Mobile Center. Теперь это можно сделать для приложений Desktop Bridge непосредственно из Visual Studio, как и для любого приложения UWP:


В рамках создания пакетов мы также проводим сертификационные тесты, а затем отправляем пакет в Центр разработки для сертификации и публикации. Вы можете опробовать результат моей отправки прямо сейчас и установить пример приложения на свой компьютер из Магазина, нажав на значок ниже. Исходный код приложения доступен для ознакомления здесь.



Что еще это дает разработчикам?

И не только

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


Заключение

С помощью Visual Studio 2017 с обновлением 4 теперь легко подготовить проект разработки настольного приложения к отправке в Магазин Windows. После преобразования в пакет приложения для Windows ваше приложение может воспользоваться всеми возможностями платформы Windows 10 и начать использовать новые API и функции. в Windows 10. Дополнительные сведения см. в следующих ресурсах:

Готовы ли вы отправить свое настольное приложение в Магазин Windows? Сообщите нам об этом здесь, и мы поможем вам в этом процессе!

Читайте также: