Создание приложений на основе формы в C#

Формы — это окна приложений. C# предлагает достаточно мощный и простой в освоении инструментарий для создания приложений на основе форм. Можно сказать, что эта технология во многом общая с Delphi или Visual Basic. Разработчику нужно разместить на окне визуальные компоненты (кнопки, списки, меню, текстовые поля, рисунки и пр.) и запрограммировать события, связанные с этими компонентами. При этом каждый компонент имеет достаточно большое число событий, доступ к которым следует реализовать через окно свойств (Properties) компонента. Пользователь также может связать с событиями компонента собственные методы (что будет показано далее). Наконец, пользователь может создавать новые визуальные и невизуальные компоненты и работать с ними так же естественно, как со стандартными компонентами C#.

Для создания приложений на основе формы выполним команду меню File | New | Project | Windows Application.

На экране монитора появится пустая форма, на которой разместим компоненты Labei и TrackBar (рис. 3.6).

Рис. 3.6. Простое приложение на основе формы

Для этого откройте палитру элементов ToolBox, а если ее нет, то используйте пункт основного меню View. Для того чтобы придать элементам требуемый вид, нажмите на элемент правой кнопкой мыши и выберите пункт Properties. Откроется окно свойств данного элемента. Например, свойство vaiue компонента TrackBar определяет позицию ползунка. Свойство Text компонента Labei определяет его текст. Свойство BackCoior компонентов Labei и Form определяет цвет этих компонентов. Свойство TextAiign компонента Labei определяет расположение текста и т. д. Программная установка этих свойств реализуется, как показано далее на примере для установки цвета фона:

this.labell.BackColor=System.Drawing.Color.FromArgb (((System.Byte) (255)),    ((System.Byte) (224) ) ,

(System.Byte) (100));

Здесь записана команда для установки цвета фона компонента с именем iabeii (класса Labei), размещенного на форме (предполагается, что ссылка this указывает на форму).

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

static void Main()

{

Application.Run(new Forml());

}

private void trackBarl_Scroll(object sender, System.EventArgs e)

{

labell.Text=""+trackBarl.Value; // Добавлено нами

}

Запустим программу на выполнение командой меню Debug | Start. Изменяя позицию ползунка, убедимся, что его координаты отображаются в поле Labei.

Итак, визуальная среда проектирования приложений в .NET имеет много общего с Delphi и Visual Basic: с компонентами связан набор свойств и событий. События обрабатываются стандартными методами. Задача пользователя — создать свой код обработки события. Познакомимся более подробно с работой списков, расширив наше приложение. Расположим на форме список comboBox и кнопку Button. По нажатию на кнопку значение ползунка будет записываться в список. Запрограммируем кнопку таким образом:

private void buttonl_Click(object sender, System.EventArgs e)

{

string s=""+trackBarl.Value;

int i=comboBoxl.FindString(s); if (i<0) comboBoxl.Items.Add(s); else

MessageBox.Show("Элемент уже есть");

}

Добавление нового элемента в список реализуется комавдой:

comboBoxl.Items.Add(s);

Команда int i=comboBoxl.Findstring(s) присваивает иеременной i значение номера строки, где в списке находится строка s. Если строки s В списке нет, ТО функция FindString(s) возвращает значение —1.

Теперь пусть по щелчку мыши на элементе списка устанавливается новая координата ползунка. Это можно реализовать так:

private void comboBoxl_SelectedIndexChanged(obj ect sender, System.EventArgs e)

{

string s=comboBoxl.Items[comboBoxl.SelectedIndex].ToString();

trackBarl.Value=Convert.ToInt32(s); labell.Text=s;

}

Чтобы записать этот метод, просто щелкнем мышью на элементе

comboBoxl. Ссылка comboBoxl. seiectedindex определяет номер выделенного элемента списка. Значение comboBoxl. Items[comboBoxl.SelectedIndex].ToString() определяет сам выделенный элемент. Метод convert.Toint32(s) преобразует строку в целое число.

Теперь сделаем так, чтобы по двойному щелчку мыши на форме список очищался. Прежде всего, откройте список свойств формы. Найдите значок молнии и откройте его. Найдите слово Dou- bieciick и щелкните по нему (рис. 3.7).

Рис. 3.7. Программирование событий DoubleClick Запишите следующий код:

private void Forml_DoubleClick(object sender,

System.EventArgs e)

comboBoxl.Items.Clear() ;

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

private void comboBoxl_MouseDown(object sender,

System.Windows.Forms.MouseEventArgs e)

if (e.Button==MouseButtons.Right) comboBoxl.Items.RemoveAt(comboBoxl.SelectedIndex);

}

Обратим внимание на то, что сначала необходимо выбрать элемент списка щелчком левой кнопки мыши, а затем щелкнуть правой кнопкой мыши на значении элемента в текстовом поле списка. Команда

comboBoxl.Items.RemoveAt(comboBoxl.SelectedIndex) удаляет выделенный элемент списка.

Команда

comboBoxl.Items.Insert(string s,int i); вставляет строку s в позицию i.

Для того чтобы сделать список невидимым, используйте comboBoxl. Hide (), а для того чтобы сделать его обратно видимым – comboBoxl. show () . Чтобы вовсе удалить список, используйте comboBoxl.Dispose().

Следующие команды выделяют элемент списка, совпадающий со строкой textBox2.Text.

int index = comboBoxl.FindString(textBox2.Text); comboBoxl.SelectedIndex = index;

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

this.comboBoxl.MouseDown+=new System.

EventHandler(this.myownmethod);

Тем самым мы указываем, что событие onMouseDown закрепляется за обработчиком по имени myownmethod. Реализуем этот метод так:

private void myownmethod(object sender,

System.Windows.Forms.MouseEventArgs e)

if (e.Button==MouseButtons.Right)

Вставим его следующим образом. Выберем компонент Formi (щелчком мыши на форме) и откроем метод initiaiizeCompo- nent() (рис. 3.8).

Рис. 3.8. Окно метода инициализации формы Заменим строку

this.comboBoxl.MouseDown+=new

System.Windows.Forms.MouseEventHandler (this.comboBoxl_MouseDown);

строкой

this.comboBoxl.MouseDown+=new

System.Windows.Forms.MouseEventHandler(this.myownmethod);

Эта новая строка указывает на то, что обработчиком события, связанного с нажатием кнопки мыши на списке comboBoxl, является метод myownmethod.

Теперь изменим содержимое класса Formi следующим образом:

static void Main()

Application.Run(new Forml());

}

private void trackBarl_Scroll(object sender,

System.EventArgs e)

{

labell.Text=""+trackBarl.Value;

}

private void buttonl_Click(object sender, System.EventArgs e) {

string s=""+trackBarl.Value;

int i=comboBoxl.FindString(s); if (i<0) comboBoxl.Items.Add(s); else

MessageBox.Show("Элемент уже есть");

}

private void comboBoxl_SelectedIndexChanged(obj ect sender, System.EventArgs e)

{

string s=comboBoxl.Items[comboBoxl.SelectedIndex].ToString() trackBarl.Value=Convert.ToInt32(s); labell.Text=s.Insert(0,"hi");

}

private void Forml_DoubleClick(object sender,

System.EventArgs e)

{

comboBoxl.Items.Clear();

}

// Следующий метод теперь бесполезен

private void comboBoxl_MouseDown(object sender,

System.Windows.Forms.MouseEventArgs e)

if (e.Button==MouseButtons.Right) comboBoxl.Items.RemoveAt(comboBoxl.SelectedIndex);

}

// Добавлено нами

private void myownmethod(obj ect sender,

System.Windows.Forms.MouseEventArgs e)

{

if (e.Button==MouseButtons.Right) comboBoxl.Items.RemoveAt(comboBoxl.SelectedIndex);

}

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

Источник: Герман О. B., Герман Ю. О., Программирование на Java и C# для студента. — СПб.: БХВ-Петербург, 2005. — 512 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100