MessageBoxButtons::YesNoCancel, // Кнопки: Yes, No и Cancel




MessageBoxIcon::Exclamation, // Пиктограмма "Предупреждение"

MessageBoxDefaultButton::Button1); // Кнопка по умолчанию: Yes

if (result == System::Windows::Forms::DialogResult::Yes)

// Если была нажата кнопка Yes...

//... Выполнение действий по сохранению файла

Else

//... Выполнение других действий

...

 

Пример 4.8. Использование окна сообщения MessageBox для предоставления пользователю возможности запретить закрытие формы. В этом примере необходимо, чтобы метод вызывался по событию FormClosing формы.

 

private:

void Form1_FormClosing(Object^ sender, FormClosingEventArgs^ e) {

// Если никакая кнопка не была нажата...

If ((MessageBox::Show(

"Вы уверенны, что хотите закрыть форму?",

"Закрытие формы", MessageBoxButtons::YesNo,

MessageBoxIcon::Question) == DialogResult::No))

e->Cancel = true; // Отмена закрытия формы.

}

 

Пример 4.9. Следующий пример кода показывает, как отобразить окно сообщения MessageBox с параметрами, поддерживаемыми методом Show. После того как проверка подтвердит, что строковая переменная ServerName пуста, отображается окно MessageBox со знаком вопроса, предлагающее пользователю возможность отмены данной операции. Для выравнивания текста по правому краю диалогового окна в примере используется элемент RightAlign перечисления MessageBoxOptions. Если метод Show возвращает значение Yes, то форма, в которой отображается объект MessageBox, закрывается.

 

private:

void validateUserEntry2() {

// Проверка наличия текста в поле ServerName.

if (ServerName->Text->Length == 0) {

// Объявление и инициализация переменных, передаваемых

// в окно сообщения (в метод MessageBox::Show).

String^ caption = "Не указано имя сервера";

String^ message =

"Вы не ввели имя сервера. Отменить эту операцию?";

MessageBoxButtons buttons = MessageBoxButtons::YesNo;

System::Windows::Forms::DialogResult result;

// Вывод сообщения.

result = MessageBox::Show(this, message, caption, buttons,

MessageBoxIcon::Question,

MessageBoxDefaultButton::Button1,

MessageBoxOptions::RightAlign);

if (result ==::DialogResult::Yes)

this->Close(); // Закрытие родительской формы.

}

}

 

 

Обработка событий нажатия клавиш для элементов управления

(https://msdn.microsoft.com/ru-ru/library/system.windows.forms.control.keypress(v=vs.110).aspx)

(https://technet.microsoft.com/ru-ru/library/system.windows.forms.control.keypress(v=vs.100).aspx)

 

При нажатии некоторой клавиши на клавиатуре (в случае, когда фокус находится на элементе управления) происходят три тесно связанных между собой события в следующем порядке:

1. KeyDown – происходит при нажатии клавиши (ее движении вниз).

2. KeyPress – происходит при нажатии символьной клавиши, пробела или клавиши BackSpace (нажатии и отпускании клавиши).

3. KeyUp – происходит при отпускании клавиши (ее движении вверх).

 

Классы KeyPressEventArgs и KeyEventArgs

 

Таблица 4.12. Свойства класса System::Windows::Forms::KeyPressEventArgs

(https://msdn.microsoft.com/ru-ru/library/system.windows.forms.keypresseventargs(v=vs.110).aspx)

Свойства Описание
Handled Возвращает или задает значение, показывающее, было ли обработано событие KeyPress. Задание свойству значения true запрещает обработку события KeyPress (отменяет событие).
KeyChar Возвращает или задает символ, соответствующий нажатой клавише (во время выполнения).

 

Таблица 4.13. Свойства класса System::Windows::Forms::KeyEventArgs

(https://msdn.microsoft.com/ru-ru/library/system.windows.forms.keyeventargs(v=vs.110).aspx)

Свойства Описание
Alt Получает значение, показывающее, была ли нажата клавиша ALT.
Control Получает значение, показывающее, была ли нажата клавиша CTRL.
Handled Возвращает или задает значение, показывающее, было ли обработано событие. Задание свойству значения true запрещает обработку события KeyPress (отменяет событие).
KeyCode Получает код клавиатуры для событийKeyDown или KeyUp.
KeyData Возвращает данные клавиши для событийKeyDown или KeyUp.
KeyValue Получает значение клавиатуры для событий KeyDown или KeyUp.
Modifiers Получает флаги модификаторов для событий KeyDown или KeyUp. Флаги указывают, какая комбинация клавиш CTRL, SHIFT и ALT была нажата.
Shift Получает значение, показывающее, была ли нажата клавиша SHIFT.
SuppressKeyPress Возвращает или задает значение, указывающее, следует ли передавать событие нажатия клавиши базовому элементу управления.

 

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

(https://msdn.microsoft.com/ru-ru/library/system.windows.forms.keys(v=vs.110).aspx)

 

Таблица 4.14. Элементы перечисления System::Windows::Forms::Keys

Имя элемента Описание
  Алфавитно-цифровые клавиши
A... Z Клавиши "A"... "Z"
D0... D9 Клавиши "0"... "9"
F1... F24 Клавиши "F1"... "F24"
Space Клавиша "Пробел".
  Клавиши цифровой клавиатуры
NumLock Клавиша "Num Lock" (фиксация цифрового регистра).
NumPad0... NumPad9 Клавиши "0"... "9" на цифровой клавиатуре.
Decimal Клавиша десятичного разделителя.
Add Клавиша сложения.
Subtract Клавиша вычитания.
Multiply Клавиша умножения.
Divide Клавиша деления.
  Управляющие клавиши
Tab Клавиша "Tab" (Табуляция).
CapsLock, Capital Клавиша "Caps Lock" (Фиксация верхнего регистра).
Enter Клавиша "Enter" (Ввод).
Return Клавиша "Return" (Возврат каретки).
Escape Клавиша "Esc" (Выход из режима).
Control Клавиша-модификатор "Ctrl".
ControlKey Клавиша "Ctrl" (Ввод управляющего кода).
Shift Клавиша-модификатор "Shift".
ShiftKey Клавиша "Shift" (Переход в верхний регистр).
Alt Клавиша-модификатор "Alt".
Menu Клавиша "Alt" (Альтернативное значение).
Insert Клавиша "Ins" (Вставить)
Back Клавиша "Backspace" (Удаление символа слева от курсора).
Delete Клавиша "Del" (Удалить)
Home Клавиша "Home" (Переход в начало строки).
End Клавиша "End" (Переход в конец строки).
LControlKey Левая клавиша "Ctrl" (ввод управляющего кода).
RControlKey Правая клавиша "Ctrl" (ввод управляющего кода).
LMenu Левая клавиша "Alt" (альтернативное значение).
RMenu Правая клавиша "Alt" (альтернативное значение).
LShiftKey Левая клавиша "Shift" (переход в верхний регистр).
RShiftKey Правая клавиша "Shift" (переход в верхний регистр).
LWin Левая клавиша с эмблемой Windows (Клавиатура Microsoft Natural).
RWin Правая клавиша с эмблемой Windows (Клавиатура Microsoft Natural).
Help Клавиша "Help" (Вызов справки)
LineFeed Клавиша "LineFeed" (Перевод строки).
Play Клавиша "Play" (Воспроизвести).
Pause Клавиша "Pause" (Приостановка).
Print Клавиша "Print" (Печать)
PrintScreen, Snapshot Клавиша "Print Screen" (Печать экрана)
Scroll Клавиша "Scroll Lock" (фиксация режима прокрутки).
Select Клавиша "Select" (Выбор)
Sleep Клавиша перевода компьютера в режим "сна" (пониженного энергопотребления)
  Клавиши управления курсором
Left, Right Клавиши "Стрелка влево" и "Стрелка вправо"
Up, Down Клавиши "Стрелка вверх" и "Стрелка вниз"
PageUp, Prior Клавиша "Page Up" (Прокрутка на страницу вверх).
PageDown, Next Клавиша "Page Down" (Прокрутка на страницу вниз).
  Кнопки мыши
LButton Левую кнопку мыши.
MButton Средняя кнопка мыши (трёхкнопочная мышь).
RButton Правой кнопкой мыши.
XButton1, XButton2 Первая и вторая дополнительные кнопки мыши (пятикнопочная мышь).
  Другие клавиши
  BrowserBack, BrowserFavorites, BrowserForward, BrowserHome, BrowserRefresh, BrowserSearch, BrowserStop Клавиши работы в браузере (Windows 2000 и более поздние версии): – перехода назад; – перехода в "Избранное"; – перехода вперёд; – перехода на домашнюю страницу; – обновления страницы; – поиска; – остановки загрузки
  MediaNextTrack, MediaPlayPause, MediaPreviousTrack, MediaStop SelectMedia Клавиши управления проигрывателем (Windows 2000 и более поздние): – переход на следующую запись; – начала / приостановки воспроизведения; – перехода на предыдущую запись; – остановки воспроизведения; – выбора записи
VolumeDown, VolumeUp, VolumeMute Клавиши уменьшения и увеличения громкости звука и его отключения (Windows версии 2000 или более поздней версии).

 

Пример 4.10. Использование события KeyPress и KeyDown для предотвращения ввода запрещенных символов в элемент управления. События KeyPress и KeyDown отменяются при нажатии пользователем нечисловой клавиши с помощью свойства Handled (оно возвращает или задает значение, указывающее, было ли обработано событие).

 

private:

// Переменная (флаг) для фиксации ввода нечислового символа.

bool nonNumberEntered;

// Обработка события KeyDown для определения типа символа,

// введенного в элемент управления TextBox.

void textBox1_KeyDown(Object^ sender,

System::Windows::Forms::KeyEventArgs^ e) {

nonNumberEntered = false; // Инициализация флага в false.

// Определение, была ли нажата цифровая клавиша

// в верхней части клавиатуры.

if (e->KeyCode < Keys::D0 || e->KeyCode > Keys::D9) {

// Определение, была ли нажата цифровая клавиша

// на цифровой клавиатуры.

if (e->KeyCode < Keys::NumPad0 || e->KeyCode > Keys::NumPad9) {

// Определение, была ли нажата клавиша BackSpace.

if (e->KeyCode!= Keys::Back) {

// Была нажата нечисловая клавиша.

nonNumberEntered = true; // Установка флага в true.

}

}

}

// Если была нажата клавиша Shift, то это не число.

if (Control::ModifierKeys == Keys::Shift) {

nonNumberEntered = true; // Установка флага в true.

}

}

// Событие KeyPress возникает после события KeyDown и может быть

// использовано для запрета ввода пользователем некоторых символов.

void textBox1_KeyPress(Object^ sender,

System::Windows::Forms::KeyPressEventArgs^ e) {

// Проверка, установлен ли флаг в событии KeyDown.

if (nonNumberEntered == true) {

// Запрет ввода символа в элемент управления, т.к. он не числовой.

e->Handled = true;

}

}

 

Пример 4.11. Использование события KeyUp с классом справки (Help) для отображения всплывающей подсказки к текстовому полю textBox1 для пользователя приложения. Когда пользователь нажимает клавишу F1, класс Help отображает всплывающую подсказку, подобную ToolTip, рядом с элементом управления. В этом примере предполагается, что элемент управления TextBox с именем textBox1 был добавлен в форму, а к его событию KeyUp был привязан метод–обработчик события.

 

private:

void textBox1_KeyUp(Object^ sender,

System::Windows::Forms::KeyEventArgs^ e) {

// Определение, была ли нажата клавиша F1.

// Если да, то показать подсказку.

if (e->KeyCode == Keys::F1) {

// Отображение всплывающей подсказки для помощи пользователю.

Help::ShowPopup(textBox1, "Введите свое имя",

Point(textBox1->Right, this->textBox1->Bottom));

}

}

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: