Выполнение проекта по умолчанию после «большого взрыва»
Давайте посмотрим, что происходит в проектe, создаваемом по умолчанию, когда произошел «большой взрыв», вселенная создана и процедура Main начала работать. Процедура Main содержит всего одну строчку:
Application.Run(new Form1());
Прокомментируем этот квалифицированный вызов. Целью здесь является класс Application из пространства имен System.Windows.Forms. Класс вызывает статический метод Run, которому в качестве фактического аргумента передается объектное выражение new Form1(). При вычислении этого выражения создается первый объект — экземпляр класса Form1. Этот объект становится текущим. Для создания объекта вызывается конструктор класса. В процессе работы конструктора осуществляется неквалифицированный вызов метода InitializeComponent(). Целью этого вызова является текущий объект — уже созданный объект класса Form1. Ни в конструкторе, ни в вызванном методе новые объекты не создаются. По завершении работы конструктора объект класса Form1 передается методу Run в качестве аргумента.
Метод Run класса Application — это знаменитый метод. Во-первых, он открывает форму — видимый образ объекта класса Form1, с которой теперь может работать пользователь. Но главная его работа состоит в том, что он создает настоящее Windows-приложение, запуская цикл обработки сообщений о происходящих событиях. Поступающие сообщения обрабатываются операционной системой согласно очереди и приоритетам, вызывая обработчики соответствующих событий. Поскольку наша форма по умолчанию не заселена никакими элементами управления, то поступающих сообщений немного. Все, что может делать пользователь с формой, так это перетаскивать ее по экрану, сворачивать и изменять размеры. Конечно, он может еще закрыть форму. Это приведет к завершению цикла обработки сообщений, к завершению работы метода Run, к завершению работы метода Main, к завершению работы приложения.
Проект WindowsHello
Давайте расширим приложение по умолчанию до традиционного приветствия в Windows-стиле, добавив окошки для ввода и вывода информации. Как уже говорилось, при создании Windows-приложения по умолчанию создается не только объект класса Form1 — потомка класса Form, но и его видимый образ — форма, с которой можно работать в режиме проектирования, населяя ее элементами управления. Добавим в форму следующие элементы управления:
- текстовое окно и метку. По умолчанию они получат имена textBox1 и label1. Текстовое окно предназначается для ввода имени пользователя, метка, визуально связанная с окном, позволит указать назначение текстового окна. Я установил свойство Multiline для текстового окна как true, свойство Text у метки — Ваше Имя;
- аналогичная пара элементов управления — textBox2 и label2 — предназначены для вывода приветствия. Поскольку окно textBox2 предназначено для вывода, то я включил его свойство ReadOnly;
- я посадил на форму командную кнопку, обработчик события Click которой и будет организовывать чтение имени пользователя из окна textBox1 и вывод приветствия в окно textBox2.
На рис. 2.4 показано, как выглядит наша форма в результате проектирования.
Рис.
2.4.
Форма «Приветствие»
Я не буду далее столь же подробно описывать действия по проектированию интерфейса форм, полагая, что все это интуитивно ясно и большинству хорошо знакомо. Более важно понимать то, что все действия по проектированию интерфейса незамедлительно транслируются в программный код, добавляемый в класс Form1. Мы вручную сажаем элемент управления на форму, тут же в классе появляется закрытое свойство, задающее этот элемент, а в процедуре InitailizeComponent выполняется его инициализация. Мы меняем некоторое свойство элемента управления, это незамедлительно находит отражение в программном коде указанной процедуры.
Вот как выглядит автоматически добавленное в класс описание элементов управления:
private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Button button1; private System.Windows.Forms.TextBox textBox2; private System.Windows.Forms.Label label2;
А вот фрагмент текста процедуры InitailizeComponent:
#region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not /// modify the contents of this method with the code /// editor. /// </summary> private void InitializeComponent() { this.label1 = new System.Windows.Forms.Label(); this.textBox1 = new System.Windows.Forms.TextBox(); this.button1 = new System.Windows.Forms.Button(); this.textBox2 = new System.Windows.Forms.TextBox(); this.label2 = new System.Windows.Forms.Label(); this.SuspendLayout(); // label1 this.label1.Location = new System.Drawing.Point(24, 40); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(152, 32); this.label1.TabIndex = 0; this.label1.Text = "Ваше имя"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; ... аналогично задаются описания свойств всех элементов управления ... ... далее задаются свойства самой формы ... // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(6, 15); this.ClientSize = new System.Drawing.Size(528, 268); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.textBox2, this.label2, this.button1, this.textBox1, this.label1 }); this.Name = "Form1"; this.Text = "Приветствие"; this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); } #endregion
Заметьте, в теге <summary> нас предупреждают, что этот метод требуется специальному инструментарию — Дизайнеру формы — и он не предназначен для редактирования пользователем; добавление и удаление кода этого метода производится автоматически. Обращаю внимание, что после заполнения свойств элементов управления заключительным шагом является их добавление в коллекцию Controls, хранящую все элементы управления. Здесь используется метод AddRange, позволяющий добавить в коллекцию одним махом целый массив элементов управления. Метод Add позволяет добавлять в коллекцию по одному элементу. Позже нам придется добавлять элементы управления в форму программно, динамически изменяя интерфейс формы. Для этого мы будем выполнять те же операции: объявить элемент управления, создать его, используя конструкцию new, задать нужные свойства и добавить в коллекцию Controls.
В заключение приведу текст обработчика событий командной кнопки. Как задается обработчик того или иного события для элементов управления? Это можно делать по-разному. Есть стандартный способ включения событий. Достаточно выделить нужный элемент в форме, в окне свойств нажать кнопку событий (со значком молнии) и из списка событий выбрать нужное событие и щелкнуть по нему. В данной ситуации все можно сделать проще — двойной щелчок по кнопке включает событие, и автоматически строится заготовка обработчика события с нужным именем и параметрами. Вот как она выглядит:
private void button1_Click(object sender,System.EventArgs e) { }
Нам остается добавить свой текст. Я добавил следующие строки:
string temp; temp = textBox1.Text; if( temp == "") textBox2.Text = "Здравствуй, мир!"; else textBox2.Text = "Здравствуй, " + temp + " !";
И вот как это работает.
Рис.
2.5.
Форма «Приветствие» в процессе работы
На этом мы закончим первое знакомство с проектaми на C# и в последующих лекциях приступим к систематическому изучению возможностей языка.
Эмм… судя по ответам, вы либо решили поприкалываться, либо я что-то не так написал
Речь идет про C#.
При создании Win-приложения 2005-я студия создает по умолчанию класс (Class1) со статическим методом Main() и класс-форму (Form1). В метод Main() помещается вызов следующей конструкции
Application.Run(new Form1());
Что при запуске приложения приводит к отображению формы на экране.
Также, вместо этого я мого отобразить форму посредством
Form1 frm = new Form1();
frm.ShowDialog();
Но в этом случае, стоит только мне минимизировать окно формы, или скрыть его, как происходит выход из ShowDialog() и приложение завершается.
Вот я и интересуюсь, что такого реализовано в методе Application.Run(), что позволяет приложению не идти дальше этой строки в Main() до тех пор пока форма не будет закрыта.
Или же по другому — чем заменить frm.ShowDialog(), чтобы работало как Application.Run(frm) ?
Это приложение, и мы хотим его запускать
Волшебный метод, который нам нужен, называется Run и входит в состав класса Application пространства имен System.Windows.Forms. Как в случае классов Console и MessageBox, экземпляр класса Application создать нельзя — все члены класса определены как static. Следующая программа создает форму, присваивает значения ее свойствам Text и Visible, а затем вызывает Application.Run.
RunFormBadly.cs
//---------------------------------------------- // RunFormBadly.cs (C) 2001 by Charles Petzold //---------------------------------------------- using System.Windows.Forms; class RunFormBadly { public static void Main() { Form form = new Form(); form.Text = "Not a Good Idea..."; form.Visible = true; Application.Run(); } }
Пожалуй, это уже успех! Вот как выглядит форма, отображаемая этой программой:
Можно захватить мышью заголовок и перемещать форму по экрану, захватить рамку формы и изменить ее размер, щелкнуть по кнопкам свертывания или развертывания, вызвать системное меню, называемое в Windows Forms меню управления (control box), щелкнув по значку в левом верхнем углу окна, или щелкнуть по кнопке закрытия в правом верхнему углу, чтобы закрыть окно.
Но есть тут и один очень серьезный недостаток, который вы, верно, уже заметили: при закрытии формы не происходит возврата из метода Application.Run, и программа остается запущенной, хотя ее форма невидима. Это еще больше бросается в глаза, если программа скомпилирована как консольное приложение: после закрытия окна программы в окне командной строки не появляется знакомое сообщение «Press any key to continue». Для завершения программы можно нажать комбинацию клавиш Ctrl+C. Если программа не компилировалась как консольное приложение, можно вызвать Task Manager (Диспетчер задач), перейти на вкладку Processes (Процессы), найти приложение RunFormBadly и завершить его вручную. (Вот и еще одна веская причина компилировать программу как консольное приложение: можно завершить программу, нажав Ctrl+C.)
Вот более правильный способ вызова метода Application.Run. Ему в качестве параметра передается объект типа Form.
RunFormBetter.cs
//----------------------------------------------- // RunFormBetter.cs (C) 2001 by Charles Petzold //----------------------------------------------- using System.Windows.Forms; class RunFormBetter { public static void Main() { Form form = new Form(); form.Text = "My Very Own Form"; Application.Run(form); } }
Заметьте: в этой версии нет ни вызова Show, ни присваивания значения свойству Visible. Форма автоматически делается видимой методом Application.Run. Кроме того, при закрытии формы, передаваемой методу в качестве параметра, Аррliсаtion.Run возвращает управление методу Main, и программа нормально завершает работу.
Программистам, имеющим опыт работы с Win32 API, скорее всего известно, что Application.Run вводит программу в цикл обработки сообщений и что для формы, передаваемой в качестве параметра, имеется код, отправляющий в цикл сообщение выхода при закрытии формы. Так что Application.Run — это то, что делает программу настоящим Windows-приложением.
Сайт управляется системой uCoz
Большая часть
средств, необходимых для создания
приложений windows
forms
находится в пространстве имен
System.Windows.Forms.
Каждое приложение
Windows
Forms
представляет собой класс, который
является производным от
System.Windows.Forms.Form.
Поэтому самое простое приложение будет
выглядеть так:
using
System;
using
System.Windows.Forms;
namespace
WindowsApplication4
{
public
class Form1 : System.Windows.Forms.Form
{
public
Form1() {}
static
void Main()
{
Form1
MyForm=new
Form1();
}
}
}
Каждое приложение
Windows
Forms
обязано иметь точку входа, с которой
начинается исполнение программы. Точка
входа определяется реализацией метода
Main().
Приведенная в примере программа создаст
объект типа Form1
и сразу же завершится. Однако необходимо,
чтобы приложение участвовало в цикле
сообщений от операционной системы.
Приложения Windows
управляются событиями. Они не производят
явных вызовов функций, а ожидают когда
система передаст им входные значения
в виде сообщений. Цикл сообщений является
частью приложений windows.
Чтобы обработать сообщения для формы,
необходимо вызвать метод Run()
класса Application.
using
System;
using
System.Windows.Forms;
namespace
WindowsApplication4
{
public
class Form1 : System.Windows.Forms.Form
{
public
Form1(){}
static
void Main()
{
Form1
MyForm=new Form1();
Application.Run(MyForm);
//или
Application.Run(new Form1());
}
}
}
Класс Application
реализует методы для управления
приложением и обработки сообщений
Windows.
Метод Application.Run()
обрабатывает сообщения от операционной
системы, предназначенные для приложения.
Объект MyForm
передается как параметр методу Run,
после чего форма отображается на экране
и ждет поступления событий (от мыши,
клавиатуры, других приложений).
34. Стандартные элементы управления: текстовые поля, кнопки, переключатели.
Большинство
приложений предоставляют возможность
пользователю вводить текст и, в свою
очередь, выводят различную информацию
в виде текстовых записей. Элементы
TextBox, RichTextBox принимают текст, а элементы
Label, StatusBar выводят ее. Для обработки
введенного пользователем текста, как
правило, следует нажать на один или
несколько элементов из группы командных
объектов.
Наряду с надписями
и полями редактирования текстовой
информации кнопки встречаются чаще
всего в пользовательском интерфейсе
приложений.
Текст надписи,
расположенной на кнопке, задается с
помощью свойства Text.
Приложение
может динамически во время своей работы
блокировать и разблокировать кнопки и
элементы управления, расположенные в
формах. Для того чтобы заблокировать
кнопку, установите значение свойства
Enabled равным true. Заблокированная кнопка
отображается в форме, однако не реагирует
на мышь и клавиатуру, а также не создает
событий.
При необходимости
приложение может скрыть кнопку или
другой элемент управления, установив
значение свойства Visible
равным false. Скрытый элемент управления
не отображается в форме и не создает
событий.
Рассмотрим
использование события buttonsEnter. Реализуем
возможность, которая заключается в том,
что при наведении курсора мыши на кнопку
она будет менять свой цвет на красный.
Для этого добавим на форму три кнопки.
В класс Form1 добавим поле oldColor, предназначенное
для хранения исходного цвета фона
кнопки:
Color
oldColor;
Добавим исходный
текст обработчика событий buttonsEnter,
подключенного ко всем кнопкам нашего
приложения:
private
void buttonsEnter(object sender, System.EventArgs e)
{
Button btn = (Button)sender;
oldColor = btn.BackColor;
btn.BackColor = Color.Red;
}
Переключатели
с зависимой фиксацией (RadioButton).
Такие
флажки объединяются в группы, причем в
отмеченном состоянии может находиться
лишь один флажок из группы.
Флажки с
зависимой фиксацией создаются на базе
класса System.Windows.Forms.RadioButton.
Переключатели
с независимой фиксацией (CheckBox).
Флажки
с независимой фиксацией работают
независимо друг от друга. При этом не
имеет никакого значения, расположены
они внутри панелей GroupBox и Panel, или
непосредственно в окне приложения. Эти
флажки создаются на базе класса
System.Windows.Forms.CheckBox.
Как правило, флажки
с независимой фиксацией используется
в программе, для того чтобы задавать
какие-либо режимы, которые можно
устанавливать независимо друг от друга.
Такие флажки могут
находиться во включенном или выключенном
состоянии, а также в третьем, неопределенном
состоянии.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Introduction
Run Application provides us quick access to the programs and files in the Windows operating system.
What is Run Application?
Run Application is a functionality provided by the Windows OS to gain quick access to any program, folder, or file. The shortcut key used to open Run Application is Windows Key+ R. Enter the name of any program or path of any file in the textbox then click on OK. It will open that program or file directly.
Figure-1
The Run Application of Windows OS is shown in Figure-1.
Creating Windows Forms App
To create Windows Forms App steps are given below.
- Open Visual Studio Code
- Create a new project
- Select Windows Forms App(.Net Framework) template and click on Next.
- Select the proper name of the project and click on Create.
- Now your form should look like as given in figure-2.
Figure-2
Components we will be using from Toolbox
- A Label
- A Textbox
- Three buttons OK, Cancel, and Browse
- An OpenFileDialog for Browse button
We will add each of the components one by one.
1. Adding a Label
Labels are used to show any text on the Window Forms. If we want to add any text to our form then we use the Label component from the toolbox. Steps to add Label are given below
- Click on the Toolbox on the right side of the form.
- Select Label and drag it to the form design.
- Now change the text inside the label as given in figure-3.
Figure-3
Figure-3 shows the label we have added.
2. Adding a TextBox
The Textbox component is used to input any text at runtime in the form. Steps to add Textbox are given below
- Again click on the Toolbox.
- Select Textbox and drag it to the form design.
- Now change the size according to the Textbox as given in figure-4.
Figure-4
3. Adding three Buttons
Buttons are used to perform actions on the form like submitting the form, closing the form, etc. To add button steps are given below
- Again click on Toolbox.
- Select Button and drag it to the form design.
- Copy the Button two times and place them as given in figure-1.
- Change the text of the Buttons as given in figure-5.
Figure-5
4. Adding an OpenFileDialog
OpenFileDialog is a dialog component used to open files at runtime. To add OpenFileDialog steps are given below
- Again click on Toolbox
- Select OpenFileDialog and drag it to the form design.
Figure-6
As given in figure-6 we have selected an OpenFileDialog.
Adding Events to the Buttons
Now we will be adding OnClick events to the buttons. All the three buttons have different functions and according to that, we will be adding events to them.
1. Adding Event to the OK Button
OK button is used to open the given program name in the textbox. To add the event to the OK button double click on the button and add the below-given code.
private void button1_Click_1(object sender, EventArgs e)
{
Process.Start(textBox1.Text); //Process.Start() is used to start the given process in textbox
}
In the above code Process.Start() is used to start the given process. Process class comes under System.Diagnostics namespace. Start is a method of Process class. We are passing the text from the textbox1 inside the Start method.
Output
Figure-7
As given in figure-7 enter cmd in the textbox and click OK.
Figure-8
It will open the command prompt as given in figure-8.
2. Adding the Event to the Cancel Button
The Cancel button is used to close the application. To add the event to the Cancel button double click on the button and add the below-given code.
private void button2_Click_1(object sender, EventArgs e)
{
Application.Exit(); //Application.Exit() is used to exit the application
}
In the above code Application.Exit() is used to close the application. Exit is a method of the Application class.
Output
Figure-9
After clicking on Cancel we will be redirected to the code.
3. Adding the Event to the Browse Button
The Browse button is used to give the file path to the textbox so that we do need not type manually in the textbox. To add an event to the Browse button double click on the button and add the below-given code.
private void button3_Click_1(object sender, EventArgs e)
{
openFileDialog2.ShowDialog(); //used to open the dialog
textBox1.Text = openFileDialog2.FileName; //it gives the path to the textbox from dialog
}
In the above-given code, openFileDialog2.ShowDialog() is used to open the fileDialog. openFileDialog2.FileName return the file path to the textbox.
Output:
After clicking on the Browse button OpenFileDialog will open as given in figure-10.
Figure-10
Now select the file and click on Open. You will get the file path in the textbox as given in figure-11.
Figure-11
We have got the path of the file in the textbox. Now click on the OK button and the file will be open.
Article In a Nutshell
- Create a Windows Forms App first.
- Add all the Toolbox components in the form as given in figure-1.
- First, add Label at the top, then Textbox, and then three Buttons.
- Now add functions in all the buttons.
- Process.Start() is used to start any given command in a textbox.
- Application.Exit() is used to exit the application process.
- ShowDialog() is used to show the openFileDialog box.
- FileName() gives the path of the file to the textbox.
Thanks for reading this article. Hope you liked it.