Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lec

.pdf
Скачиваний:
41
Добавлен:
24.03.2015
Размер:
3.43 Mб
Скачать

Validated

Возникает

при

окончании

проверки

 

элемента управления.

 

Validating

Возникает

при

проверке

элемента

 

управления.

 

 

 

VisibleChanged

Возникает

при

изменении

значения

 

свойства Visible.

 

 

Взаимодействие с пользователем

Изменением свойств, вызовом методов, выполнением обработчиков событий.

Два способа обработки события:

1.Замещение защищенного метода, вызывающего соответствующее событие (OnClick --> Click).

2.Подключение собственного обработчика, тело которого генерирует Дизайнер VS.

281

События

рис.4

2. События ЭУ

Наиболее часто используемые события ЭУ:

Click

DoubleClick

Validating

Enter

Leave

Paint

Enter, Leave – получить фокус элементом управления, потерять фокус (параметр EventArgs е).

282

Validating

– проверить правильность данных

(параметр

CancelEventArgs е).

 

private void

button1_Click (object sender, EventArgs e) { . . . }

sender – ссылка на ЭУ, сгенерировавший событие.

sender.Name – имя (идентификатор) ЭУ;

sender.Text – текст в ЭУ.

e – параметры сообщения.

Как установить фокус ввода: ЭУ.Focus()

Возвращаемое значение: значение true, если запрос фокуса ввода был успешным; в противном случае — false.

Примечания

Метод Focus возвращает значение true, если элемент управления успешно получил фокус ввода. Ели элемент управления имеет фокус ввода, не всегда имеются внешние признаки, указывающие на это. Такое поведение характерно в первую очередь для невыделяемых элементов управления, перечисленных ниже, а также для любых производных от них элементов управления.

Элемент управления может быть выделен и получить фокус ввода, если всем нижеследующим утверждениям соответствует значение true: бит стиля ControlStyles.Selectable задан как true; элемент управления содержится в другом элементе управления, и все его родительские элементы видимы и включены.

Список элементов управления форм Windows Forms, которые также являются невыделяемыми. Элементы управления, производные от этих элементов, также не выделяются.

Panel

GroupBox

PictureBox

ProgressBar

Splitter

Label

LinkLabel (если ссылка в элементе управления отсутствует)

Пример

В следующем примере фокус передается указанному Control при условии, что он имеет возможность получать фокус.

public void ControlSetFocus(Control control)

{

// Set focus to the control, if it can receive focus. if(control.CanFocus)

{

control.Focus();

}

}

283

 

3. События клавиатуры

KeyDown

– при нажатии

KeyUP

– при отпускании

void Form1_KeyUp(object sender, KeyEventArgs e)

Свойства класса KeyEventArgs:

Alt, Control, Shift = true – нажата, false – не нажата.

KeyCode – код нажатой клавиши

KeyData – совокупность кодов нажатых клавиш

KeyPress – удержание, посылается серия событий void Form1_KeyPress(object sender, KeyPressEventArgs e)

 

4. События мыши

MouseClick

– щелчок

MouseDoubleClick (посылается и MouseClick)

MouseDown – нажатие

MouseUp

– отпускание

MouseEnter – курсор находится на ЭУ

MouseHover – курсор мыши наведен на элемент управления MouseLeave – курсор покидает ЭУ

MouseMove – перемещение курсора

MouseWheel – колесико

private void Form1_MouseDown(object sender, MouseEventArgs e)

Открытые свойства MouseEventArgs

 

Button

 

Возвращает значение перечисления MouseButtons -

 

 

сведения о том, какая кнопка мыши была нажата.

 

Clicks

 

Возвращает число нажатий и отпусканий кнопки мы-

 

 

 

ши.

 

Delta

 

Возвращает счетчик со знаком для количества щелч-

 

 

 

ков вращающегося колесика мыши. Щелчок — это один

 

 

 

зубчик колесика мыши.

 

X

Возвращает x-координату мыши.

 

Y

Возвращает y-координату мыши.

Начиная с Windows 2000, корпорация Майкрософт вводит под-

держку пятикнопочной мыши Microsoft IntelliMouse Explorer.

Две новые кнопки мыши (XBUTTON1 и XBUTTON2) обеспечивают перемещение вперед-назад.

Перечисление MouseButtons

Имя члена

Описание

Значение

Left

Была нажата левая кнопка мыши.

1048576

Middle

Была нажата средняя кнопка мы-

4194304

 

ши.

 

None

Никакая кнопка мыши не была

0

284

 

нажата.

 

 

 

 

Right

Была нажата правая кнопка мы-

2097152

 

ши.

 

 

 

 

XButton1

Была

нажата

первая

кнопка

8388608

 

XButton.

 

 

 

 

XButton2

Была

нажата

вторая

кнопка

16777216

 

XButton.

 

 

 

 

Пример.

switch (e.Button)

{

case MouseButtons.Left: eventString = "L";

x1 = e.X;

y1 = e.Y; break;

case MouseButtons.Right: eventString = "R"; break;

}

5. Событие Paint

private void Form1_Paint (object sender, Forms.PaintEventArgs e) Graphics g = e.Graphics;

Элемент управления Button

Это простая командная кнопка.

рис.5

Свойство формы AcceptButton, равное ссылке на кнопку, делает кнопку в качестве кнопки по умолчанию, т.е. активируемой при любом нажатии клавиши ВВОД, независимо от того, на каком элементе управления формы находится в этот момент фокус. На рис. вызывается button1_Click.

Примечание. Если для текстового поля установлено AcceptsReturn=false, эту возможность можно использовать для ввода по Enter текста в текстовые поля, например, такие как TextBox. Иначе, клавиша Enter в случае AcceptsReturn=false будет проигнорирована.

285

Свойство формы CancelButton, равное ссылке на кнопку делает кнопку кнопкой «Отмена». Кнопка «Отмена» активируется при любом нажатии клавиши ESC, независимо от того, на каком элементе управления формы находится в этот момент фокус. В нашем примере ызывается button2_Click().

&Пуск –> (Tab, Alt+П)

Создание главного меню

Рассмотрим разработку следующей программы.

рис.6

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

Для создания главного меню используется элемент управления

MenuStrip (MainMenu – VS 2003). Перетаскиваем компонент MenuStrip на форму из ToolBox. MenuStrip отображается на панели невидимых элементов, а в форме отображаются элементы ToolStripMenuItem, которые в тексте программы включаются в контейнер компонента MenuStrip.

Примечание. Класс ToolStripMenuItem не наследует интерфейс Control, поэтому общим ЭУ не является. ОЭУ можно располагать на форме в любом месте и изменять размеры, а главное меню – только под заголовком.

286

ToolStripMenuItem

Ниспадающее меню,

 

 

 

Пункт меню, команда,

PopUp-меню

 

DropDown-элемент

 

 

 

рис.7 Каждый пункт главного меню имеет свое окно свойств, в котором,

подобно другим элементам управления, задаются значения свойств

Name и Text (см. 1,2).

287

3

1

4

2

5

6

Черный Ctrl+B

рис.8

В поле Text перед словом Черный стоит знак & — так называемый амперсанд, указывающий, что Ч должно быть подчеркнута и будет частью встроенного клавиатурного интерфейса Windows (см. 1). Когда

288

пользователь на клавиатуре нажимает клавишу Alt и затем Ч, выводится пункт Черный. Для разделения пунктов горизонтальной разделительной линией в свойстве Text пункта меню просто вводим знак тире. Существует и другой способ.

Пункты меню во время работы в дизайнере (конструкторе VS) с помощью свойства Checked=true можно пометить галочкой (см. 3) или с помощью свойства Enabled=false сделать пункт недоступным для работы

(см. 4).

6.Быстрые клавиши

ВWindows есть еще интерфейс для работы с так называемыми быстрыми клавишами, или акселераторами. Сочетание клавиш указывают в свойстве ShortcutKeys (см. 5). Следует назначать стандартным пунктам общепринятые сочетания клавиш.

С помощью свойства ShowShortcutKeys=false быстрые клавиши можно не отображать в меню. По умолчанию ShowShortcutKeys=true (см. 6).

7.Исходный текст программы

Классы и свойства:

public class MenuStrip : ToolStrip

public virtual ToolStripItemCollection Items { get; } public class ToolStripMenuItem : ToolStripDropDownItem

public abstract class ToolStripDropDownItem : ToolStripItem public ToolStripItemCollection DropDownItems { get; }

public class ToolStripItemCollection : ArrangedElementCollection, IList, ICollection, IEnumerable

На рис.9 показана связь объектов главного меню.

DropDownItems.

 

 

 

Объекты класса

Объект menuStrip1

 

класса MenuStrip

ToolStripItemCollection

ToolStripMenuItem

 

 

ЦВЕТ

ToolStripItemCollection

AddRange()

черный

Items.

Ad-

 

красный

dRange()

 

 

 

 

синий

 

ToolStripItemCollection

ТОЛЩИ-

 

пик-

 

 

 

 

 

 

пиксе-

 

 

 

рис.9

 

Рассмотрим подробнее, как программируется меню на уровне исход-

ного текста программы.

 

 

 

1.

289

Сначала создается контейнер MenuStrip и все объекты-пункты меню.

// создаем контейнер MenuStrip и пункты ToolStripMenuItem

MenuStrip menuStrip1 = new MenuStrip();

ToolStripMenuItem ЦВЕТ = new ToolStripMenuItem();

ToolStripMenuItem черный = new ToolStripMenuItem();

ToolStripMenuItem красный = new ToolStripMenuItem();

ToolStripMenuItem синий = new ToolStripMenuItem();

ToolStripMenuItem ТОЛЩИНА = new ToolStripMenuItem();

ToolStripMenuItem пикселей1 = new ToolStripMenuItem();

ToolStripMenuItem пикселей2 = new ToolStripMenuItem();

2.

Компонент MenuStrip является контейнером пунктов меню самого верхнего уровня. Все пункты меню (и PopUp, и DropDown) являются эек-

земплярами класса ToolStripMenuItem.

Используя свойство Items контейнера, получаем ссылку на коллек-

цию класса ToolStripItemCollection.

С помощью метода AddRange() этой коллекции в коллекцию включаются ссылки на объекты-меню верхнего уровня.

// Включаем в коллекцию контейнера menuStrip1 PopUp-пункты главного меню.

menuStrip1.Items.AddRange(new ToolStripItem[ ] {ЦВЕТ, ТОЛЩИНА});

menuStrip1.Location = new System.Drawing.Point(0, 0); menuStrip1.Name = "menuStrip1";

menuStrip1.Text = "menuStrip1";

menuStrip1.Size = new System.Drawing.Size(707, 24); menuStrip1.TabIndex = 0;

3.

Если пункт меню является PopUp-пунктом, то через его свойство DropDownItems становится доступной коллекция класса ToolStripItemCollection.

С помощью метода AddRange() этой коллекции в коллекцию включаются ссылки на DropDown-объекты (подчиненные подпункты).

// Формируем PopUp-меню ЦВЕТ, устанавливаем свойства его пунктов

ЦВЕТ.DropDownItems.AddRange (new ToolStripItem[ ] { черный, красный, синий } ); ЦВЕТ.Name = "ЦВЕТ";

ЦВЕТ.Text = "&ЦВЕТ";

ЦВЕТ.Size = new System.Drawing.Size (51, 20);

// черный

 

черный.Checked = true;

// установить флажок

черный.CheckState = Forms.CheckState.Checked;

// запомнить состояние

290

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]