Создание графического приложения (Windows Forms) в Visual Studio
Для последней версии Visual Studio 2013 (всех редакций):
Создать проект->Visual C++->CLR->Пустой проект CLR->
После создания проекта нажать на вкладку Проект->Добавить новый элемент->UI->форма Windows Form.
Потом добавить следующий код в MyForm.cpp:
1 2 3 4 5 6 7 8 9 10 11 12 13
#include "MyForm.h" //the header name for your form using namespace CyberForum; //name of your project [STAThreadAttribute] int main(arraySystem::String ^> ^args) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); Application::Run(gcnew MyForm()); return 0; }
Далее нажимаем вкладку проект-Свойства : (имя текущего проекта).
Свойства конфигурации — Компоновщик — Система — Подсистема (Configuration Properties — Linker — System — SubSystem): вставляем Windows (/SUBSYSTEM:WINDOWS).
Свойства конфигурации — Компоновщик — Дополнительно — Точка входа (Configuration Properties — Linker — Advanced — Entry Point): вставляем main
Также в MyForm.cpp можно добавить следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13
#include "MyForm.h" using namespace System; using namespace System::Windows::Forms; [STAThread] void main(arrayString^>^ arg) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); Project2::MyForm form; //Project2 - name of your project Application::Run(%form); }
Пример разработки простейшего приложения типа Windows Forms на языке C++ в MS Visual Studio
В данной теме рассмотрен пример создания приложения расчета площади треугольника по формуле Герона. Приложение реализовано в системе Microsoft Visual Studio как Windows Forms Application .
В работе описывается программирование события клика на кнопке. Также рассматриваются особенности взаимодействия программного кода с компонентами Label (метка), Button (кнопка), Edit (строка ввода).
Поиск на других ресурсах:
Математическая постановка задачи
Заданы длины сторон треугольника a , b , c . Используя средства системы Microsoft Visual Studio разработать приложение, которое вычисляет площадь треугольника по формуле Герона. Приложение реализовать на языке C++ как Windows Forms Application .
Формула Герона для расчета площади треугольника:
где a , b , c – стороны треугольника; p – полупериметр, рассчитывается по формуле:
⇑
Выполнение
1. Запустить Microsoft Visual Studio . Создать проект.
Запустить MS Visual Studio . Создать проект как Windows Forms Application на базе шаблона Visual C++ . Пример создания проекта типа Windows Forms Application в C++ и типы создаваемых файлов приведен здесь.
Сохранить файл, задать ему произвольное имя (например « MyApp01 «).
В результате, будет создана главная форма приложения как изображено на рисунке 1.
По умолчанию, создается класс формы с именем Form1 . Ему отвечает файл с именем « Form1.h » (рисунок 1). Для того, чтобы перейти в режим просмотра кода файла « Form1.h » существует три способа:
– команда View -> Code (рисунок 2);
– команда « View Code » из контекстного меню, которое вызывается кликом на названии файла Form1.h в утилите Solution Explorer (рисунок 3);
– клик на соответствующей кнопке ( View Code или View Designer ) в Solution Explorer (рисунок 4).

Рис. 1. Главная форма приложения

Рис. 2. Команда Code с меню View

Рис 3. Вызов режима просмотра кода из контекстного меню

Рис 4. Вызов режима просмотра кода из Solution Explorer
В результате перехода в режим просмотра, откроется окно с текстом файла « Form1.h «.

Рисунок 5. Исходный код модуля формы « Form1.h «
Таким образом можно переходить между режимами проектирования ( Design ) и редактирования исходного кода ( Code ) проекта.
Класс формы содержит:
– конструктор Form1() ;
– деструктор ~Form1() ;
– метод InitializeComponent() , в котором можно реализовать начальную инициализацию внутренних переменных.
2. Размещение компонент на форме.
Для работы программы нужно разместить соответствующие компоненты на форме. Чтобы размещать компоненты, нужно перейти в режим проектирования ( Design ) одним из вышеописанных способов.
Компоненты находятся на панели инструментов Toolbox (рисунок 6).

Рис. 6. Палитра инструментов Toolbox
В нашем случае размещаются следующие компоненты:
– три компонента типа Label (метка) (рисунок 7). Предназначены для вывода информационных сообщений « a = «, « b = «, « c = «. В результате создается три экземпляра (объекта) с именами label1 , label2 , label3 ;
– три компонента типа TextBox (строка ввода) – для ввода значений переменных a , b , c (рисунок 8). Создается три объекта с именами textBox1, textBox2, textBox3;
– один компонент типа Button (кнопка) (рисунок 9). Предназначен для реализации команды вычисления площади и вызова соответствующего обработчика события. Создается экземпляр с именем button1;
– один компонент типа Label (рисунок 10). Предназначен для вывода результата (площадь треугольника). Создается объект с именем label4.
После размещения компонент форма будет иметь вид как показано на рисунке 10.

Рисунок 7. Компонент Label

Рисунок 8. Компонент TexbBox

Рисунок 9. Компонент Button

Рисунок 10. Компонент Label
3. Настройка свойств компонент.
Чтобы форма имела более наглядный для решения задачи вид, нужно настроить ее свойства а также свойства компонент размещенных на ней.
Для настройки свойств формы и компонент используется окно « Properties » (рисунок 11). Это окно вызывается командой
View->Properties Window
или клавишей F4.

Рис. 11. Окно « Properties » настройки свойств компонент
Для изменения названия формы (программы), нужно ее предварительно выделить (мышкой). После этого в заголовке окна « Properties » может появиться название формы Form1 . Следующим шагом нужно свойство Text установить в значение « Площадь треугольника » (рисунок 12).

Рис. 12. Настройка заголовка главной формы программы
Подобным образом настраиваются свойства компонент, размещенных на форме. Настроить такие свойства компонент:
– в компоненте label1 свойство Text = « a = «;
– в компоненте label2 свойство Text = « b = «;
– в компоненте label3 свойство Text = « c = «;
– в компоненте label4 свойство Text = « Площадь треугольника = «;
– в компоненте button1 свойство Text = « Вычислить «.
После выполненных действий, форма будет иметь вид, как изображено на рисунке 13.

Рис. 13. Вид формы после настройки компонент
4. Программирование события клика на кнопке button1.
Результатом работы программы есть вычисление площади треугольника. Вычисление происходит в момент когда пользователь делает клик на кнопке « Вычислить «. В результате формируется событие Click . В программе этому событию отвечает фрагмент программного кода, который называется обработчиком события (event handler). Этот фрагмент формируется средствами Microsoft Visual Studio .
Для того чтобы вызвать обработчик события клика на кнопке button1 , нужно выполнить следующие действия (рисунок 14):
– выделить компонент button1 ;
– в окне Properties активировать вкладку « Events » (события);
– в списке событий, в поле ввода события Click сделать двойной клик мышкой.

Рис. 14. Вызов обработчика события Click клика на кнопке button1
В результате выполненных действий, система Microsoft Visual Studio сформирует обработчик события и переключит окно в режим ввода программного кода.
Обработчик события (метод) имеет название button1_Click . Формируется следующий программный код:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) >
Между фигурными скобками нужно вписать собственный код вычисления площади треугольника по формуле Герона.
Листинг программного кода обработчика события button1_Click() следующий:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) < float a, b, c, p, s, t; a = System::Double::Parse(this->textBox1->Text); b = System::Double::Parse(this->textBox2->Text); c = c.Parse(this->textBox3->Text); p = (a + b + c)/2; t = p * (p-a) * (p-b) * (p-c); if (t<0) label4->Text = "Ошибка ввода данных!"; else < s = (float)Math::Sqrt(t); label4->Text = s.ToString(); > >
Объясним некоторые фрагменты кода.
Чтобы перевести значение компонента textBox1->Text из строки в соответствующей вещественный тип float используется метод Parse() из класса System::Double .
Чтобы занести в переменную a типа float значение строки с textBox1->Text можно использовать один из двух способов:
a = System::Double::Parse(this->textBox1->Text);
a = a.Parse(this->textBox1->Text);
Указатель this есть указателем на данный класс (класс Form1 ).
Для вычисления квадратного корня используется функция Sqrt() из класса Math :
s = (float)Math::Sqrt(t);
Для преобразования из типа float в строчный ( string ) используется метод ToString() :
label4->Text = s.ToString();
5. Запуск проекта на выполнение.
Теперь можно запускать проект на выполнение (клавиша F5 ) и тестировать его работу.
Программирование: теория и практика
- C# (176)
- Практика (46)
- MS Visual Studio 2010 (34)
- MS Visual Studio 2017 (7)
- MS Visual Studio 2019 (13)
- ADO .NET (7)
- Практика (31)
- Borland C++ Builder 2007 (16)
- MS Visual Studio 2010 (18)
- Visual C++ (136)
- Практика (6)
- Теория (102)
- Практика (1)
- Теория (21)
- Практика (1)
- Теория (21)
- Практика (20)
- Delphi-7 (4)
- Embarcadero RAD Studio 2010 (18)
- Практика (4)
- Теория (92)
- SQL (5)
- Patterns. Паттерн Abstract Factory. Решение задачи о составляющих компьютера 7 октября, 2023
- Patterns. Паттерн Prototype. Реализация схемы на C++ 22 сентября, 2023
- Patterns. Паттерн Composite (Компоновщик). Дерево. Реализация на C++ 18 сентября, 2023
- Patterns. Паттерны. Сравнение паттернов Abstract Factory, Factory Method и Prototype 12 сентября, 2023
- Patterns. Паттерн Factory Method (Фабричный метод). Реализация структуры, простейший случай 6 сентября, 2023
- Patterns. Паттерн Bridge. Реализация структуры на C++ 6 сентября, 2023
- Паттерны проектирования. Паттерн Facade (Фасад) 29 августа, 2023
- SQL. Числовые типы данных. Обзор. Примеры 25 августа, 2023
- C++. Наследование шаблонных классов. Добавление нового типа в унаследованных классах 9 августа, 2023
- C++. Бинарное дерево поиска. Класс BinaryTree. Целые числа 1 августа, 2023
При использовании материалов сайта, ссылка на сайт обязательна.
Lekce 1 — Úvod do Windows Forms aplikací

Vítejte u první lekce kurzu, ve kterém se naučíme vytvářet okenní (formulářové) aplikace v C# .NET a vyzkoušíme si použití jednotlivých komponent. Budeme pracovat s tlačítky, textovými poli, tabulkami, ale i s obrázky, časovači a dalšími tzv. ovládacími prvky (anglicky controls), které máme v těchto aplikacích k dispozici.
Kurz budu psát tak, abyste nepotřebovali žádné pokročilé znalosti. Předpokládám však, že znáte alespoň základy objektově orientovaného programování.
Windows Forms
Windows Forms je prvním frameworkem z .NETu, který umožňuje jednoduchou tvorbu formulářových aplikací pomocí grafického designeru. Nalezneme zde plnou sadu připravených ovládacích prvků (někdy označovaných jako komponenty) pro většinu situací. A pokud nám nebudou stačit, můžeme si samozřejmě vytvořit vlastní nebo upravit nějakou existující. Právě Windows Forms se budeme v tomto kurzu věnovat.
V současné době existuje spolu s Winforms ještě jeden modernější framework WPF (Windows Presentation Foundation). Obsahuje lepší oddělení logiky a výstupu, podporu rychlejšího vykreslování, animací, bindingů a dalších nových technologií. V praxi se u formulářových aplikací používají oba frameworky, u novějších aplikací WPF, existující aplikace z většiny používají Winforms. V současné době není Winforms označen za zastaralý a stále se používá, jeho použití je jednoduché a určitě se v praxi setkáte s mnoha aplikacemi, které jsou ve Winforms napsané. Měli byste o nich tedy mít alespoň nějaké povědomí, i když je určitě lepší tvořit nové aplikace rovnou ve WPF, které je technologicky mnohem dále.
Příprava Visual Studia
Pro vývoj formulářových aplikací je nutné mít ve Visual Studiu nainstalovanou sadu funkcí «Vývoj desktopových aplikací pomocí .NET». To ověříme kliknutím na položku Tools v aplikačním menu VS, poté zvolíme položku Get Tools and Features… . Otevře se nám Visual Studio Installer , pomocí kterého se instaluje VS a také pomocí něj můžeme doinstalovat sady funkcí. Ujistěte se, že máte zaškrtnutou sadu «Vývoj desktopových aplikací pomocí .NET», případně ji zaškrtněte a klikněte na Změnit .

První formulářová aplikace

Nezačneme jinak, než klasickou aplikací Hello World, tentokrát formulářovou Pokud jste nečetli zdejší kurz, tak zopakuji, že je to jednoduchá aplikace, která nedělá nic jiného, než že vypíše nějaký text.
Vytvořte si nový projekt, jako typ projektu vyberte Windows Forms Application. Jako název zvolíme HelloForms .

Okno vašeho Visual Studia by nyní mělo vypadat asi takto:

Popišme si jeho jednotlivé části, které budeme při vývoji formulářových aplikací používat. Důležité části jsou na obrázku výše zvýrazněné červeně.
- Designer (Grafický návrhář) — V Designeru vidíme, jak formulář vypadá. Zatím je to jen prázdné okno.
- Properties (Vlastnosti) — V okně Properties vidíme vlastnosti aktuálně označeného prvku na formuláři. Pokud okno nevidíte, zapněte si ho v menu View -> Properties Window.
- Toolbox (Panel nástrojů) — Toolbox je vyjížděcí okno, které slouží jako paleta s jednotlivými ovládacími prvky, které můžeme na formulář vložit.
Nastavení vlastností ovládacích prvků
Když označíme nějaký prvek na formuláři nebo formulář samotný, můžeme v okně Properties měnit jednotlivé vlastnosti tohoto prvku.
Jelikož na formuláři žádný prvek nemáme, je označený právě formulář. Formuláři změníme titulek na «Pozdrav» . Vyhledejte si vlastnost Text a do ní vložte hodnotu «Pozdrav» (bez uvozovek). Výsledek se hned projeví v návrháři. Tímto způsobem budeme nastavovat vlastnosti všech prvků na formuláři.
Vložení ovládacích prvků na formulář
Nyní otevřeme Toolbox a vybereme ovládací prvek Label , což je textový popisek. Vložíme jej do formuláře buď dvojklikem nebo přesunutím myší. Formulář si zmenšete a label myší jednoduše přesuňte doprostřed. Označenému labelu v oknu Properties nastavte text na «Pozdrav z formuláře» .
Vaši první okenní aplikaci můžete spustit jako vždy zeleným tlačítkem Play nebo klávesou F5 . Měli byste dostat podobný výsledek:

Pod pokličkou

Vysvětleme si, jak aplikace funguje uvnitř. Samotný formulář je samozřejmě objekt (jak jinak ). Je definován třídou Form1 , kterou nalezneme v souboru Form1.cs . Soubor si samozřejmě můžete přejmenovat v Solution Exploreru, přejmenuje se i třída. Pro naší aplikaci by se formulář mohl jmenovat např. PozdravForm , přejmenujte si ho tak, jelikož se v aplikaci poté budete lépe orientovat.
Visual Studio zobrazuje buď grafický náhled formuláře nebo jeho zdrojový kód. Mezi těmito režimy můžeme přepínat buď pravým kliknutím na formulář (resp. na kód) a výběrem možnosti View Code (resp. View Designer). Užitečné je znát klávesové zkratky Shift + F7 k přesunu do návrháře a Ctrl + Alt + 0 k přesunu do kódu. Musí se jednat o nulu na alfanumerické klávesnici (tu vlevo).
Přesuňte se do kódu formuláře, který vypadá asi takto (vynechal jsem počáteční using y):
namespace HelloForms < public partial class PozdravForm : Form < public PozdravForm() < InitializeComponent(); >> >
Vidíme, že formulář je třída dědící z třídy Form . Nikde zde není ani památky po tom, co jsme naklikali, pouze v konstruktoru se volá podivná metoda InitializeComponent() .
Třída je označená jako partial , což znamená, že je definována ve více souborech. Konkrétně existuje ještě soubor PozdravForm.Designer.cs , který obsahuje již méně přehledný kód, který se automaticky generuje tím, jak v návrháři klikáme.
Tento kód je schválně oddělen do dalšího souboru, aby nedělal zdrojový kód formuláře nepřehledným. Do souboru Designer.cs nikdy ručně nezasahujte a vlastně byste o jeho existenci ani nemuseli vědět. Ukažme si ale jeho obsah, abychom pochopili, jak aplikace funguje:
namespace HelloForms < partial class PozdravForm < /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) < if (disposing && (components != null)) < components.Dispose(); >base.Dispose(disposing); > #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() < this.label1 = new System.Windows.Forms.Label(); this.SuspendLayout(); // // label1 // this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(75, 32); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(135, 17); this.label1.TabIndex = 0; this.label1.Text = "Pozdrav z formuláře"; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(282, 80); this.Controls.Add(this.label1); this.Name = "Form1"; this.Text = "Pozdrav"; this.ResumeLayout(false); this.PerformLayout(); > #endregion private System.Windows.Forms.Label label1; > >

V kódu vidíme onu skrytou metodu InitializeComponent() , která nedělá nic jiného, než že vytvoří postupně všechny prvky na formuláři a nastaví jim patřičné vlastnosti, které jsme zvolili. Vidíme zde, jak se tvoří náš label a nastavují se mu vlastnosti. Metoda se poté volá v konstruktoru, čímž se formulář inicializuje. Nezasvěcený programátor je tedy úplně odstíněn od kódu, co generuje návrhář. Je to samozřejmě hlavně proto, aby ho nemohl rozbít Nicméně je důležité vědět, jak to funguje, abyste byli schopni např. přidávat ovládací prvky za běhu aplikace nebo opravit chyby v souboru, co designer generuje.
Dnešní projekt je ke stažení v příloze článku včetně zdrojových kódu, bude tomu tak vždy. Pokud vám něco nešlo, můžete si najít chybu.
V příští lekci, Jednoduchá kalkulačka v C# .NET Windows Forms, si vysvětlíme, jak fungují události a naprogramujeme si jednoduchou kalkulačku.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 681x (47.9 kB)
Aplikace je včetně zdrojových kódů v jazyce C#Вопросы с меткой [visual-studio-2019]
Линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств, вышедшая в 2019 году.
197 вопросов
Конкурсные
Неотвеченные- Конкурсные 0
- Неотвеченные
- Цитируемые
- Рейтинг
- Неотвеченные (мои метки)
Как обновить CMake в Visual Studio 2019?
Visual Studio устнавливал через Offline Installer с флагом —noWeb, видимо поэтому, когда я пытаюсь обновить CMake через инсталлер путём его удаления и установки, ничего не меняется. Значит мне нужно .
задан 4 окт в 6:35
60 показовVS не видит Newton Json.Net
Библиотеку установил с помощью менеджера пакетов нугет, при этом в коде для юнити VS не видит эту библиотеку. Что нужно сделать, чтобы он начал видеть эту библиотеку? Код: using System.Collections; .
задан 22 авг в 12:23
39 показовСоздание и управление версиями одной программы в Visual Studio 2019
у меня есть программа, которую я постоянно дорабатываю и изменяю, но иногда нужно откатываться назад. Как дать текущей версии кода свою версию, создавать новые версии и присваивать им номера, и, при .
задан 17 авг в 6:32
57 показовНе могу понять в чём проблема с textBox в wpf
этот код на c# using System; using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using Un4seen.Bass; using Un4seen.Bass.AddOn.Tags; using Microsoft.Win32; using .
задан 20 июн в 22:17
27 показовMVS 2019 — Как исключить из всплывающего списка завершения слов intellisense, зависимости?
Да это замечательная функция, но с некоторыми включенными файлами ( яркий пример «windows.h» ) как сразу её функциональность резко сходит на минималки. Вот как !? Как избавиться от этого .
задан 19 июн в 14:50
17 показовVS 2019 для запуска c++ win Forms требует какой то dll файл с названием самого проекта, выдает ошибку, и не собирает проект
VS 2019 для запуска c++ win Forms требует какой то dll файл с названием самого проекта, выдает ошибку, и не собирает проект. Порыл интернет, ответов на данный вопрос так и не нашел
задан 21 мая в 17:05
20 показовПроблема отображения ошибки во время выполнения в Visual Studio 2019
Столкнулся с проблемой, что когда вылетает ошибка во время выполнения, не важно какая именно, то отображение текста ошибки шакалит (текст немного размыт). Кто-нибудь знает как это можно пофиксить ?
задан 20 мая в 20:19
57 показовDirectShow mp4 проигрыватель
В наличии винда Win7 x64 и студия VS2019. Давно хочу увидеть какой-то живой пример исходников mp4 плеера. DirectShow вроде как должен уметь показывать видео. У microsoft даже есть туториал DirectShow .
задан 23 апр в 0:41
При попытке инициализации члена класса, который являет при этом объектом вложенного класса, возникает ошибка:
using namespace System; using namespace System::Windows::Forms; using namespace System::Threading::Tasks; using namespace System::Linq; using namespace System::Text; using namespace System.
задан 4 апр в 16:54
Как в VS2019 при создании проекта Android, исправить ошибки не дающие его скомпилировать NU3028, NU3037?
Ошибка: NU3028 Пакет «Xamarin.AndroidX.CursorAdapter 1.0.0.1» из источника «https://api.nuget.org/v3/index.json»: Поставщик доверия не доверяет сертификату метки времени основная .
задан 1 апр в 0:28
56 показов.git отслеживание файлов
В какой-то момент заметила, что гит отслеживает все, абсолютно все файлы в которых я когда-либо работала, и сейчас этих изменений больше 7 000, как можно решить эту проблему? коммитить или пушить их .
задан 6 мар в 16:16
12 показовКак мне правильно поставить и запустить код с библиотекой RobotPy или WPILib?
Так, есть фреймворк WPILib это для программирования робота так вот и у него есть Project Creator где можно создать проект и вот когда ты создаешь проект то там просят выбрать язык и есть два варианта .
задан 28 фев в 19:01
13 показовОт которого обновления Windows 7 SP1 зависит установка VS2019?
В MS заявлено об поддержке Win 7 SP1 только с последними обновлениями. А именно встречаю ошибку .Net 4.7.2 не становится. Какое обновление приведёт к успешности установки? (Нужно уметь VS быстро .
задан 26 фев в 5:56
Как решить ошибку которая показывает на стандартную библиотеку?
Пишу небольшой лексический анализатор, но когда пытаюсь скомпилировать, пишется ошибка которая и показывает на стандартную библиотеку: C2679 binary ‘
задан 18 дек 2022 в 5:16
39 показовЗашифровка и расшифровка символов в слове: Сл*в*=Слово
Доброго времени суток всем, помогите пожалуйста разобраться, у меня есть слова расположенные в файле, которые выводиться в label полностью закрытые символом: «звёздочка», после ввода буквы, .
задан 5 дек 2022 в 19:04
15 30 50 на странице-
Важное на Мете
Связанные метки
Подписаться на ленту
Лента новых вопросов с меткой [visual-studio-2019]
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
- Практика (46)
