Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 07. Стандартні компоненти- модальні вікн...docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
76 Кб
Скачать
☆

7.6. Обробка подій кнопок панелі інструментів

Кнопки панелі інструментів дублюють відповідні команди меню. І кнопки і команди меню генерують власні події, наприклад, Click.

Для того, щоб не дублювати код обробників можна:

1. Написати закритий метод класу, який реалізує обробку події і викликати цей метод з обробника меню і обробника кнопки. Цей спосіб ми застосовували для відкриття і збереження файлу.

2. Застосувати делегати. Тут делегати відіграють роль покажчиків на функцію.

Наприклад, обробник меню Про програму має вигляд:

//Довідка про програму - власна форма

private void мояДовідкаToolStripMenuItem_Click(object sender, EventArgs e)

{

//створення об'єкту класу і записк форми як модального діалогу

MyHelp myform = new MyHelp();

myform.ShowDialog();

}

Обробник кнопки на панелі інструментів містить тільки посилання на потрібний обробник

//кнопка Help - виклик власного вікна про програму

private void helpToolStripButton_Click(object sender, EventArgs e)

{

мояДовідкаToolStripMenuItem_Click(this, new EventArgs());

}

Делегат використовується і для роботи з новим файлом – команда меню Новий.

Лістинг 7.7.

//Обробники подій Click при виборі команд меню

//новий документ

private void новийToolStripMenuItem_Click(object sender, EventArgs e)

{

//меню Новий документ

if (docChanged)

{

DialogResult dr;

dr = MessageBox.Show(

"Зберегти зміни?", "NkEdit",

MessageBoxButtons.YesNoCancel,

MessageBoxIcon.Warning);

switch (dr)

{

case DialogResult.Yes:

if (SaveDocument() == 0)

{

textBox1.Clear();

docChanged = false;

}

break;

case DialogResult.No:

textBox1.Clear();

docChanged = false;

break;

case DialogResult.Cancel:

//

break;

};

}

}

В обробнику кнопки панелі інструментів використовується делегат – показчик на обробник меню

//Кнопка Новий - new

private void newToolStripButton_Click(object sender, EventArgs e)

{

//виклик обробника меню Новий, генеруємо нову подію

новийToolStripMenuItem_Click(this, new EventArgs ());

}

7.7. Завершення роботи програми та інші події

7.7.1. Завершення роботи програми

Вихід з програми виконується при виборі команди меню Вихід. При цьому потрібно перевірити, чи збережені останні зміни у файлі.

Лістинг 7.8.

//Вихід

//Обробник команди меню Вихід - завершення роботи програми

private void вихідToolStripMenuItem_Click(object sender, EventArgs e)

{

//Завершення роботи - перевірити чи збережені зміни у файлі

if (docChanged)

{

DialogResult dr;

dr = MessageBox.Show("Зберегти зміни?", "NkEdit",

MessageBoxButtons.YesNoCancel,

MessageBoxIcon.Warning);

switch (dr)

{

case DialogResult.Yes:

SaveDocument();

this.Close();

break;

case DialogResult.No:

this.Close();

break;

case DialogResult.Cancel:

// відмінити закриття вікна програми

break;

};

}

this.Close();

}