C#. Windows Forms. Практика. Пример, который демонстрирует создание пятиугольной формы
По данному примеру можно научиться разрабатывать Windows Forms приложения, основная форма которых имеет произвольный вид.
Содержание
- Условие задачи
- Инструкция
- 1. Создать новый проект по шаблону Windows Forms
- 2. Настройка формы Form1
- 3. Размещение и настройка кнопки Close на форме
- 4. Программирование обработчика события клика на кнопке button1
- 5. Программирование обработчика события Form_Load()
- 6. Запуск программы. Результаты
Поиск на других Web-ресурсах:
Условие задачи
Разработать приложение Windows Forms, в котором форма есть пятиугольной. На форме разместить кнопку закрытия формы. Рекомендованные координаты в пикселах (x; y) пятиугольника формы: (0; 150), (50; 300), (420; 300), (650; 150), (400; 0).
⇑
Инструкция
1. Создать новый проект по шаблону Windows Forms
Более подробно процесс создания новой формы описывается здесь . После создания форма имеет имя Form1 по умолчанию.
⇑
2. Настройка формы Form1
В окне Properties нужно настроить следующие свойства формы Form1 :
- свойство FormBorderStyle = None ;
- свойство BackColor = Blue (рисунок 1). Чтобы найти цвет Blue нужно перейти на вкладку Web .

Рисунок 1. Установка свойства BackColor
⇑
3. Размещение и настройка кнопки Close на форме
С помощью панели инструментов Toolbox разместить на форме кнопку. В результате система создаст компонент кнопки с именем button1 .
Для кнопки button1 нужно установить следующие свойства:
- Text = «Close» ;
- Location = (150, 200).
⇑
4. Программирование обработчика события клика на кнопке button1
Для программирования события нужно выполнить следующие действия (рисунок 2):
- выделить кнопку button1 ( Close )
- в окне Properties перейти на вкладку Events ;
- в перечне обработчиков событий сделать двойной клик в области события Click . В результате откроется код обработчика этого события. Другой способ вызова кода обработчика события Click – двойной клик мышкой на кнопке, которая размещена на форме.

Рисунок 2. Событие Click компонента button1 в окне Properties
В текст обработчика события нужно добавить следующий код
Вышеприведенная строка с помощью this обращается к экземпляру формы Form1 . Метод Close() формы закрывает форму, таким образом что происходит выход из программы.
⇑
5. Программирование обработчика события Form_Load()
В соответствии с условием задачи, нужно чтобы после запуска форма отображалась в виде пятиугольника. Для этого нужно запрограммировать обработчик события Load формы Form1 . Событие Load вызывается в начале выполнения программы, когда форма появляется на экране (загружается).
Для вызова обработчика события Load нужно выполнить следующие действия (рисунок 3):
How is Form1_Load() invoked by the Load event in Windows Forms?
I have found that Load is an event and the Form1 class has Form1_Load() function with arguments. But I couldn’t find how that function is invoked by the Load event. How does this call occur?


2 Answers 2
An event has a certain signature, and the event handler must match this signature.
The default EventHandler delegate has a signature of object sender, EventArgs e , so the event handler method must have this exact same signature:
If it wouldn’t, but for example simply be a parameterless method:
Then this code wouldn’t compile:
No overload for ‘Form1_Load’ matches delegate ‘System.EventHandler’
As for who is raising this event and how the arguments are assigned, that’s the WinForms engine doing that for you.
Form1 load в c что это
Для взаимодействия с пользователем в Windows Forms используется механизм событий. События в Windows Forms представляют стандартные события на C#, только применяемые к визуальным компонентам и подчиняются тем же правилам, что события в C#. Но создание обработчиков событий в Windows Forms все же имеет некоторые особенности.
Прежде всего в WinForms есть некоторый стандартный набор событий, который по большей части имеется у всех визуальных компонентов. Отдельные элементы добавляют свои события, но принципы работы с ними будут похожие. Чтобы посмотреть все события элемента, нам надо выбрать этот элемент в поле графического дизайнера и перейти к вкладке событий на панели форм. Например, события формы:

Чтобы добавить обработчик, можно просто два раза нажать по пустому полю рядом с названием события, и после этого Visual Studio автоматически сгенерирует обработчик события. Например, нажмем для создания обработчика для события Load :

И в этом поле отобразится название метода обработчика события Load. По умолчанию он называется Form1_Load .
Если мы перейдем в файл кода формы Form1.cs, то увидим автосгенерированный метод Form1_Load:
И при каждой загрузке формы будет срабатывать код в обработчике Form1_Load.
Как правило, большинство обработчиков различных визуальных компонентов имеют два параметра: sender — объект, инициировавший событие, и аргумент, хранящий информацию о событии (в данном случае EventArgs e ).
Но это только обработчик. Добавление же обработчика, созданного таким образом, производится в файле Form1.Designer.cs:
Для добавления обработчика используется стандартный синтаксис C#: this.Load += new System.EventHandler(this.Form1_Load)
Поэтому если мы захотим удалить созданный подобным образом обработчик, то нам надо не только удалить метод из кода формы в Form1.cs, но и удалить добавление обработчика в этом файле.
Однако мы можем добавлять обработчики событий и програмно, например, в конструкторе формы:
Простое Windows-приложение — текстовый редактор
Рассмотрим пример проектирования стандартного оконного приложения. Простейшая последовательность действий:
1) визуальное проектирование интерфейса (перенос на форму с Панели элементов необходимых визуальных и не визуальных элементов);
2) генерация заготовок методов обработки событий, связанных с элементами управления;
3) программирование методов обработки событий.Постановка задачи
Создать текстовый редактор с обязательными функциями работы с файлами «Открыть» и «Сохранить как», а также функциями редактирования текста. Выбор действий с файлами осуществлять через главное меню.
Реализация
Разместим на форме визуальный элемент textBox1 класса TextBox. Размер элемента сделайте чуть меньше размера формы, сместив его вниз от заголовка на 30-40 пикселей. Задайте свойство textBox1.MultiLine = true (для редактирования текста в несколько строк).
Перетащите с Панели элементов компонент menuStrip1 класса MenuStrip для создания меню.В левом верхнем углу рабочей области формы появится кнопка «Введите здесь» , а на панели невизульных компонентов отобразится элемент menuStrip1.
Для выбора имен файлов для их чтения и записи перетащим на эту же панель элементы openFileDialog1 (класс OpenFileDialog) и saveFileDialog1 (класс SaveFileDialog).
Кликнув по кнопке «Введите здесь», введите имя раздела меню «Файл» и добавьте ниже следующие пункты меню работы с файлами «Открыть», «Сохранить как» и «Выход». Ваша форма (вместе с панелью невизуальных элементов) будет выглядеть примерно так:
Примечание: для наглядности изменено свойство формы BackColor = Color.Peru. Первая группа действий закончена.Вторая группа действий обеспечивает генерацию заголовков методов обработки событий, связанных к кнопками меню. Для этого дважды нажмите каждую из трех позиций меню, а также событию Load формы Form1 на закладке «События» панели «Свойства» поставьте в соответствие метод Form1_Load (двойной клик справа от в строке Load).
Откроем форму в режиме Кода (файл Form1.cs):
Перейдем к третьей группе действий — написанию кода для этих четырех методов.
Метод Form1_Load( ) используем для очистки поля компонента textBox1, для задания форматов файловых диалогов и имени файла — контрольного примера при его открытии:
Комментарий. При загрузке формы мы задаем свойство FileName объекта openFileDialog1 указанием имени файла для открытия, а также задаем фильтры для диалогов открытия и сохранения файлов. Сравните работу программы без использования этого метода.
В методе открытьToolStripMenuItem_Click( ) используется компонент openFileDialog1 для выбора имени файла для чтения. Если имя не выбрано (FileName = String.Empty), то работа метода завершается. Иначе создается новый экземпляр класса System.IO.StreamReader (var Читатель) с указанием имени файла и кодировки, данные из текстового файла переносятся в textBox1, объект Читатель закрывается. Добавлена обработка исключений, которые могут возникнуть при открытии файла:
Аналогично выполняется запись (сохранение) текстового файла:
Последний метод — закрытие формы — реализуется одним оператором:
Подготовим в блокноте текстовый файл Text2.txt и разместим его в подкаталоге data папки, где будет размещено ваше приложение. Запустим программу на выполнение. Добавьте в окне редактора несколько строк, сохраните файл с другим именем. Откройте новый файл и удалите часть текста в окне редактора.
Заметим, что работают стандартные операции выделения текста, копирования, вставки и удаления части текста с использованием мыши и комбинаций управляющих клавиш, используемых в известных текстовых редакторах.
ВЫВОД: В первом приближении поставленная задача решена. Данный пример приведен всего лишь для понимания:
во-первых, алгоритма действий разработчика визуального приложения «интерфейс, события-методы, реализация»;
во-вторых, удобства использования готовых компонентов (нам не пришлось программировать операции редактирования текста — стандартные события уже привязаны к компоненту textBox1);
в-третьих, целесообразности использования готовых компонентов (файловых диалогов) с точки зрения стандартизации интерфейса пользователя и программы.Напомним, что в статье про классы мы отмечали, что в языке C# предусмотрено несколько разновидностей данных-членов и функций-членов. Пока мы подробно рассмотрели только поля и константы — как данные-члены, а также методы — как функции-члены класса. В следующих статьях мы рассмотрим события, как данные-члены класса и трехзвенную цепочку события-делегаты-методы. После чего вернемся к член-функциям класса: свойствам, конструкторам, финализаторам, операциям и индексаторам.
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.