Использование системных форм Windows, как подключиться 2019

Обновлено: 21.11.2024

Поддержка Windows Forms 2.0 завершена. На данный момент мы в основном просто исправляем ошибки и полируем наш код.

О системе.Windows.Forms

System.Windows.Forms (также известный как Managed.Windows.Forms, MWF, Winforms) — это один из множества инструментов GUI для использования с Mono, который совместим с Microsoft System.Windows.Forms. Поддержка Winforms 1.1 и 2.0 завершена и сейчас находится в состоянии обслуживания/исправления ошибок.

Что касается визуальной интеграции с рабочим столом, в настоящее время мы поставляем классическую тему Win32.

Содействие

В настоящее время все элементы управления практически завершены. Сейчас мы в основном исправляем ошибки в нашей реализации. См. Ошибки.

Если вы хотите внести свой вклад, вы можете:

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

Обратите внимание, что существует несколько правил участия в Winforms:

  • Общие правила участия, особенно специальные примечания внизу.
  • Элементы управления должны быть нарисованы с использованием кода System.Drawing.
  • Код рисования должен быть привязан к интерфейсу темы.
  • Если ваш метод можно протестировать с помощью автоматизированного теста NUnit, также включите тест.

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

Драйверы

Существует системный драйвер для каждого окна, который выполняет следующие задачи:

  • Ввод с клавиатуры
  • Создание окна
  • Перевод событий

Реализация Mono в Windows.Forms преобразует собственные системные события, такие как X11, в сообщения Win32 WM_ и отправляет их с помощью механизма WndProc. Это позволяет приложениям, зависящим от переопределения WndProc, по-прежнему работать с некоторыми функциями, не предоставляемыми API.

Специальные возможности

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

Пример кода

Примеры приложений для Windows.Forms от Mono доступны в winforms на github

Тематика

В этом разделе обсуждаются проблемы с темами в реализации Windows Forms в Mono, поскольку эти вопросы часто задают:

Почему бы не использовать нативные виджеты?

Вписаться

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

Развитие интерфейса тем

В настоящее время у нас есть управляемая тема Win32 Classic по умолчанию и собственная тема Windows VisualStyles. Мы хотели бы иметь нативные темы для Linux и macOS.

Самый лучший вариант, который у нас есть на данный момент, — это тема VisualStyles. В Windows это вызывает собственный API Windows и позволяет ему рисовать для нас. К сожалению, пространство имен System.Windows.Forms.VisualStyles в настоящее время не реализовано в Linux или macOS. Лучшим способом продвижения вперед было бы реализовать это пространство имен на этих платформах. (В качестве альтернативы можно было бы портировать uxtheme.dll от Wine, и мы могли бы выпускать темы Clearlooks и Aqua, которые сделали люди.)

Пространство имен VisualStyles позволяет вам сосредоточиться просто на рисовании одного элемента, например «выбранной кнопки», вместо того, чтобы пытаться просеивать код темы, чтобы выяснить, как он рисует кнопку.

История

Предпринимались две предыдущие попытки реализовать System.Windows.Forms в Mono. Эти первоначальные попытки были предприняты поверх других наборов инструментов: сначала Gtk, затем Wine. У каждого была своя доля проблем, из-за чего от него отказались.

У Gtk были следующие проблемы:

  • Сопоставить семантику одного инструментария с другим было очень сложно.
  • Было бы очень обременительно сопоставлять все события с событиями WndProc, системой обмена сообщениями, лежащей в основе Windows.Forms.
  • Работы по разработке проводились в самом начале жизни Mono, из-за этих очень спорадических усилий по разработке код быстро устарел или немного сгнил.
  • Для использования этого на других системах требовалась установка Gtk+ в целевой системе (больше всего пострадали бы macOS и встроенные устройства).

Усилия Wine могли бы стать успешным подходом, однако возникло несколько технических препятствий:

  • Поддержка многопоточности.Wine имеет специальную настройку потока, которая не совместима с Mono. Хотя это было решаемо, для Wine потребовались бы более крупные исправления.
  • Зависимости. Для взаимодействия Mono и Wine требовалась связующая библиотека. Эта библиотека требовала знать, куда была установлена ​​Wine (у нас был патч для Wine, упрощающий это требование, но он не был принят в Wine).
  • Движущаяся цель. Ключевые функции в Wine менялись достаточно часто, поэтому с каждым выпуском Wine нам приходилось заново заставлять наш связующий код снова работать, иногда становясь несовместимым с предыдущими версиями Wine.
  • Взаимодействие Wine/Gdi+. Способ, которым System.Drawing нужно было сделать совместимым с Wine, был крайне неэффективным. Wine использует модель GDI (растровое рисование), а наша реализация System.Drawing, построенная поверх Cairo, использует модель GDI+ (модель компоновки). Заставлять их обоих разговаривать было крайне неэффективно, так как каждый переход от одной модели к другой требовал копирования растровых изображений.

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

Управление веб-браузером

Информацию об элементе управления WebBrowser можно найти на странице WebBrowser.

Этот форум перенесен в раздел вопросов и ответов Майкрософт. Посетите Microsoft Q&A, чтобы публиковать новые вопросы.

Отвечает:

Вопрос

$fd = Новый объект system.windows.forms.openfiledialog

с помощью System.Windows.Forms; // «Формы» подчеркнуты красным цветом в Visual Studio 2017

Имя типа или пространства имен «Forms» не существует в пространстве имен «System.Windows» (вам не хватает ссылки на сборку?)

Есть ли у меня проблемы с версией и как их исправить?

Вот "О" для Visual Studio

Установленная версия: сообщество

Инструменты Application Insights для пакета Visual Studio 8.14.11009.1
Инструменты Application Insights для Visual Studio

Инструменты службы приложений Azure версии 3.0.0 15.9.03024.0
Инструменты службы приложений Azure версии 3.0.0

Функции Azure и инструменты веб-задания 15.9.02046.0
Функции Azure и инструменты веб-задания

Общие инструменты Azure 1.10
Предоставляет общие службы для использования мобильными службами Azure и инструментами Microsoft Azure.

Языковая служба JavaScript 2.0
Языковая служба JavaScript

Инструменты Microsoft Azure 2.9
Инструменты Microsoft Azure для Microsoft Visual Studio 2017 — версия 2.9.10730.2

Инструменты непрерывной доставки Microsoft для Visual Studio 0.4
Упрощение настройки конвейеров Azure DevOps из Visual Studio IDE.

Microsoft JVM Debugger 1.0
Поддерживает подключение отладчика Visual Studio к JDWP-совместимым виртуальным машинам Java

Microsoft Library Manager 1.0
Простая установка клиентских библиотек в любой веб-проект

Microsoft MI-Based Debugger 1.0
Поддерживает подключение Visual Studio к отладчикам, совместимым с MI

ProjectServicesPackage Extension 1.0
Подробная информация о расширении ProjectServicesPackage Visual Studio

Расширение ResourcePackage 1.0
Подробная информация о расширении ResourcePackage Visual Studio

Расширение ResourcePackage 1.0
Подробная информация о расширении ResourcePackage Visual Studio

Инструменты данных SQL Server 15.1.61810.11040
Инструменты данных Microsoft SQL Server

Инструменты TypeScript 15.9.20918.2001
Инструменты TypeScript для Microsoft Visual Studio

Visual Basic Tools 2.10.0-beta2-63501-03+b9fb1610c87cccc8ceb74a770dba261a58e39c4a
Компоненты Visual Basic, используемые в среде IDE. В зависимости от типа и настроек вашего проекта может использоваться другая версия компилятора.

Пакет узла адаптера отладки кода Visual Studio 1.0
Уровень взаимодействия для размещения адаптеров отладки кода Visual Studio в Visual Studio

Инструменты Visual Studio для контейнеров 1.0
Инструменты Visual Studio для контейнеров

Если вы еще не установили Visual Studio, перейдите на страницу загрузок Visual Studio, чтобы установить ее бесплатно.

Если вы еще не установили Visual Studio, перейдите на страницу загрузок Visual Studio, чтобы установить ее бесплатно.

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

Если вы еще не установили Visual Studio, перейдите на страницу загрузок Visual Studio 2022, чтобы установить ее бесплатно.

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

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

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

Откройте Visual Studio.

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

После этого нажмите кнопку «Изменить» в установщике Visual Studio. Вам может быть предложено сохранить вашу работу; если да, то делай так. Затем выберите Продолжить, чтобы установить рабочую нагрузку. Затем вернитесь к шагу 2 этой процедуры "Создание проекта".

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

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

Откройте Visual Studio.

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

После этого нажмите кнопку «Изменить» в установщике Visual Studio. Вам может быть предложено сохранить вашу работу; если да, то делай так. Затем выберите Продолжить, чтобы установить рабочую нагрузку. Затем вернитесь к шагу 2 этой процедуры "Создание проекта".

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

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

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

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

Выберите Панель инструментов, чтобы открыть всплывающее окно Панель инструментов.

(Если вы не видите всплывающую опцию "Панель инструментов", вы можете открыть ее из строки меню. Для этого выберите "Вид" > "Панель инструментов". Или нажмите Ctrl+Alt+X.)

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

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

В окне "Свойства" найдите Text, измените имя с button1 на Click this и нажмите Enter.

(Если вы не видите окно "Свойства", вы можете открыть его из строки меню. Для этого выберите "Просмотр" > "Окно свойств". Или нажмите F4.)

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

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

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

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

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

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

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

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

(Кроме того, вы можете развернуть Form1.cs в обозревателе решений, а затем выбрать Form1.)

В окне Form1.cs после строки private void введите lblHelloWorld.Text = "Hello World!"; как показано на следующем снимке экрана:

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

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

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

Выберите кнопку Нажмите эту кнопку в диалоговом окне Form1. Обратите внимание, что текст label1 меняется на Hello World!.

Закройте диалоговое окно Form1, чтобы остановить запуск приложения.

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

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

Выберите «Панель инструментов», чтобы открыть всплывающее окно «Панель инструментов».

(Если вы не видите всплывающую опцию "Панель инструментов", вы можете открыть ее из строки меню. Для этого выберите "Вид" > "Панель инструментов". Или нажмите Ctrl+Alt+X.)

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

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

В окне "Свойства" найдите текст, измените имя с Button1 на Click this и нажмите Enter.

(Если вы не видите окно "Свойства", вы можете открыть его из строки меню. Для этого выберите "Просмотр" > "Окно свойств". Или нажмите F4.)

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

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

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

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

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

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

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

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

(Кроме того, вы можете развернуть Form1.cs в обозревателе решений, а затем выбрать Form1.)

В окне Form1.cs после строки private void введите lblHelloWorld.Text = "Hello World!"; как показано на следующем снимке экрана:

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

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

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

Выберите кнопку Нажмите эту кнопку в диалоговом окне Form1. Обратите внимание, что текст Label1 меняется на Hello World!.

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

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

Реализация с открытым исходным кодом, размещенная на GitHub.

Введение

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

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

Чтобы узнать, как создать приложение Windows Forms, см. Учебник: Создание нового приложения WinForms.

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

В 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 и автоматически считываются обратно в память во время выполнения.

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

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

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

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

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