69086

СТВОРЕННЯ МЕНЮ І ПАНЕЛЕЙ ІНСТРУМЕНТІВ

Лекция

Информатика, кибернетика и программирование

Простір імен System.Windows.Forms містить класи для організації спадаючих головних меню (розташованих у верхній частині форми) і контекстних меню, що відкриваються по клацанню правої кнопки миші. Клас ToolStrip є контейнером для створення структур меню, панелей інструментів і рядків станів.

Украинкский

2014-09-29

896.3 KB

2 чел.

10

ЛЕКЦІЯ 6. СТВОРЕННЯ МЕНЮ І ПАНЕЛЕЙ ІНСТРУМЕНТІВ 

План

6.1. Створення головного меню для застосунку

6.1.1. Розміщення меню

6.1.2. Призначення клавіш швидкого доступу (ShortcutKeys)

6.1.3. Створення обробників команд меню

6.2. Створення панелі інструментів

6.2.1. Стандартні кнопки панелі інструментів

6.2.2 Додавання власних кнопок

6.2.3. Спливаючі підказки

6.3. Меню Про програму (About). Виклик форми з меню

6.3.1. Вставка нової форми в проект

6.3.2. Використання стандартного вікна Про програму (About)

6.4. Обробка подій кнопок панелі інструментів і меню. Делегати.

6.5. Команди меню як прапорці

6.1. Створення головного меню для застосунку

6.1.1. Розміщення меню

Простір імен System.Windows.Forms містить класи для організації спадаючих головних меню (розташованих у верхній частині форми) і контекстних меню, що відкриваються по клацанню правої кнопки миші.

Клас ToolStrip є контейнером для створення структур меню, панелей інструментів і рядків станів.

Елемент управління MenuStrip - це контейнер для структур меню на формі. Цей елемент успадковується від класу ToolStrip. Система меню будується додаванням об'єктів ToolStripMenu до menuStrip.

Клас ToolStripMenuItem служить для побудови структур меню. Кожний об'єкт ToolStripMenuItem представляє окремий пункт в системі меню.

Для створення меню потрібно перетягнути елемент MenuStrip на форму. Він розміщується в невидимій частині форми.

Елемент MenuStrip дозволяє вводити текст команд меню безпосередньо в елементи меню або за допомогою вікна Властивостей, призначаючи властивості Text елемента меню потрібний текст.

Для генерації обробника події достатньо вибрати відповідний пункт меню, за допомогою двійного натискання згенерувати заготівку обробника і добавити в обробник потрібний код.

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

Створення меню і панелей інструментів та реалізацію їхніх обробників будемо розглядати на прикладі створення простого текстового редактора.

Приклад 6.1. Простий редактор текстів

Створимо форму NkEdit і додамо на неї текстове поле textBox1 з можливістю введення декількох рядків тексту. Можна використовувати також об'єкти класу RichTextBox, в яких можна зберігати файли більшого розміру.

Вставимо на форму з вікна ToolBox об'єкт MenuStrip1 – головне меню програми.

В рядку меню вставимо команди: Файл, Параметри, Допомога (рис. 6.1).

Рис. 6.1. Вікно редактора текстів

В пункт Файл додамо команди:

Новий

Відкрити...

Зберегти ...

Друкувати…

-----------------

Вихід

Для обробки команд Відкрити, Зберегти,  Друкувати будемо використовувати стандартні модальні вікна діалогу (лекція 7).

Примітка:

Якщо при виборі команди викликається вікно діалогу, то після її назви ставлять крапки (…).

В меню Параметри додамо команди:

Панель інструментів  - відобразити чи приховати  панель інструментів

Шрифт – стандартний  діалог вибору шрифту

В меню Допомога додамо команди:

Моя Довідка – виклик власної модальної форми діалогу.

Про програму - виклик стандартної форми Про програму (вікно About).

6.1.2. Призначення клавіш швидкого доступу (ShortcutKeys)

Для кожної команди випадаючого меню можна призначити клавіші клавіатури (ShortcutKeys). Це можна зробити за допомогою властивості ShortcutKeys. З випадаючого списку властивості вибрати потрібні поєднання клавіш (рис. 6.2). Зроблені налаштування з'являться у команді.

Рис. 6.2. Призначення гарячої клавіші меню Новий

Призначимо командам меню клавіші швидкого доступу, наприклад, як у Блокноті:

Команда

ShortcutKeys

Новий

Ctrl+N

Відкрити

Ctrl+O

Зберегти

Ctrl+S

Друкувати

Ctrl+P

Шрифт

Ctrl+F

Моя Довідка

Ctrl+H

Призначимо заголовку форми текст "Мій простий редактор текстів".

Рис. 6.3. Вигляд форми з заголовком і призначеними клавішами швидкого доступу

6.1.3. Створення обробників команд меню

Основним повідомленням команди меню є Click. Це повідомлення виникає, коли користувач вибирає відповідну команду меню. Для цього необхідно клацнути двічі по полю з іменем повідомлення, у вікні властивостей команди меню додати обробник.

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

На рис. 6.4. зображено зв'язування методу події Click команди меню Новий з її обробником.

Рис. 6.4. Команді меню Новий призначається її обробник

6.2. Створення панелі інструментів

Елемент ToolStrip використовується безпосередньо для побудови панелей інструментів. В Visual Studio.NET передбачені засоби, які дозволяють додати панель інструментів за допомогою графічних засобів. Для цього необхідно відкрити панель Toolbox і додати елемент ToolStrip. 

6.2.1. Стандартні кнопки панелі інструментів

У Visual Studio є набір стандартних кнопок (готових компонентів), у яких вже є піктограми і імена.

Можна створити стандартну панель інструментів, а потім додати нові кнопки. Для підключення стандартних кнопок потрібно клацнути на невеликий трикутник в панелі інструментів, щоб викликати вікно ToolStrip Tasks і в ньому вибрати команду Insert Standard Items (Рис. 6.5).

Рис. 6.5. Вибір стандартних кнопок панелі інструментів.

Після вставки, зайві кнопки можна видалити. Скористаємося стандартними кнопками, залишивши тільки потрібні.

6.2.2. Додавання власних кнопок

У випадаючому меню елемента ToolStrip на формі необхідно вибрати елемент button – кнопка (рис. 6.6). При цьому в панелі інструментів буде додана кнопка.

На кнопці потрібно розмістити рисунок. Це можна зробити шляхом завдання властивості Image відповідній кнопці.

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

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

Рис. 6.6. Розміщення на панелі інструментів власної кнопки

Заготовимо файл рисунку для кнопки. З меню властивостей кнопки виберемо властивість Image, у вікні Select Resource увімкнемо перемикач Local resource, натиснемо кнопку Import для пошуку рисунку у файловій системі (рис. 6.7).

Рис. 6.7. Пошук рисунку для кнопки

6.2.3. Спливаючі підказки

Спливаючі підказки ToolTip - це невеликі вікна з текстом, що з'являються при наведенні покажчика миші на елемент.

Для зручності доцільно забезпечити кнопки панелі інструментів спливаючими підказками при фокусуванні курсору на цій кнопці.

Це можна зробити, якщо властивості ToolTipText класу toolStripButton задати значення текстового рядка із змістом підказки.

Взагалі, всі елементи керування форми і сама форма мають таку властивість, але спочатку вона відсутня у переліку властивостей елемента. Для того, щоб додати її до переліку властивостей потрібно розмістити на формі (у невидимій частині) компонент ToolTip.

Для стандартних кнопок панелі інструментів властивість ToolTipText вже призначена.

Потрібно замінити текст стандартної підказки на свій.

6.3. Меню Про програму (About). Виклик форми з меню

Для  виводу інформації про програму і виробника можна створити власну модальну форму чи скористатися стандартною.

Для демонстрації створимо дві форми, одну власну і стандартну.

6.3.1. Вставка нової форми в проект

Додамо в проект нову пусту форму і назвемо її MyHelp 

Для цього в меню Project виберемо Add Windows Form Add Item  і у вікні компонентів виберемо Windows Form (рис. 6.8). Перейменуємо форму за допомогою команди Refactor, а також назву файлу у вікні проекту.

Цю форму будемо відкривати при виборі меню Допомога команди Моя довідка.

В обробнику події Click напишимо конструктор і виклик форми.

Приклад 6.2.

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

       {

           MyHelp myform = new MyHelp();

           myform.ShowDialog();

}

В цьому обробнику спочатку створюється об'єкт myform класу MyHelp. Для відкриття модального діалогового вікна використовується метод ShowDialog.

Рис. 6.8. Вставка нової форми в проект

На формі розмістимо рисунок, напис (елемент Label), посилання на сайт – елемент LinkLabel і кнопку ОК. Всі налаштування робимо за допомогою вікна властивостей.

Рис. 6.9. Вигляд вікна Про програму

Розміщення рисунку на формі

Спочатку з панелі інструментів (Toolbox) слід перетягти в потрібне місце об’єкт pictureBox, потім у вікні властивостей для властивості Image призначити файл рисунка. Для цього у вікні вибору ресурсу включити перемикач Local resource і натиснути кнопку Import... для пошуку файлу з рисунком у файловій системі (рис. 6.10).

Після знаходження рисунку слід натиснути кнопку OK.

Рис. 6.10. Пошук рисунку

Для налаштування розмірів рисунку у контейнері PictureBox потрібно клацнути на невеликий трикутник, потім у вікні PictureBox Tasks вибрати з випадаючого списку Size Mode один з режимів, наприклад, AutoSize і натиснути кнопку OK (рис. 6.11).

Рис. 6.11. Налаштування рисунку в контейнері

Розміщення інформації про програму

Розмістимо на формі два елементи Label: Label1 і Label2.

У властивості Label1.Text запишемо "Лаб.робота 4. Простий редактор текстів".

Label2.Text запишемо інформацію про розробника і права власності.

Розміщення гіперпосилань

Розглянемо детальніше елемент LinkLabel, який дозволяє створювати гіперпосилання.

Текст посилання у формі URL можна призначити текстовій змінній, чи безпосередньо  властивості Text елемента LinkLabel. Натискання на цей рядок генерує подію LinkClicked, обробник якої потрібно реалізувати у формі.

Приклад 6.3.

private void linkLabel1_LinkClicked(object sender,

     LinkLabelLinkClickedEventArgs e)

       {

           // Navigate to a URL.

           System.Diagnostics.Process.Start("http://www.microsoft.com");

 //           http://msdn.microsoft.com/ru-ru/library/system.windows.forms.linklabel.linkclicked.aspx

       }

Тут коментарем закрите посилання на сторінку msdn з описом цього елемента.

Динамічне створення LinkLabel

Елемент LinkLabel як і будь-який елемент можна створювати в коді. Модифікуємо код форми таким чином, щоб посилання на сторінку msdn генерувалося у коді:

http://msdn.microsoft.com/ru-ru/library/system.windows.forms.linklabel.linkclicked.aspx

Розмістимо на формі ще один елемент LinkLabel з іменем linkLabel2, його властивості Text призначимо URL-посилання в методі  Form2_Load.

Приклад 6.4.

       private void Form2_Load(object sender, EventArgs e)

       {

           linkLabel2.Text="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.linklabel.linkclicked.aspx";

       }

Напишемо новий обробник для події LinkClicked від цього елемента.

Приклад 6.5.

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

       {

           System.Diagnostics.Process.Start(linkLabel2.Text);

 }

Тепер вікно форми буде мати наступний вигляд (рис. 6.12):

Рис. 6.12. Вікно Про програму з двома гіперпосиланнями

Обидва посилання активізуються при їх виборі, що призводить до виходу в Інтернет за вказаною адресою.

6.3.2. Використання стандартного вікна Про програму (About)

Додамо до проекту стандарту форму FormAbout для виведення довідкової інформації про програму. Для цього додамо в проект новий компонент, вибравши із списку AboutBox (Меню Project | Add New Item).

Для відкриття модального вікна діалогу використовується метод ShowDialog. Код для відкриття вікна може виглядати наступним чином:

Приклад  6.6.

private void aboutToolStripMenuItem_Click(object sender, EventArgs e)

{

   AboutBox1 aboutBox = new AboutBox1();

   aboutBox.ShowDialog(this);

}

Ця стандартна форма має обмежену функціональність. 

6.4. Обробка подій кнопок панелі інструментів і меню. Делегати.

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

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

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

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

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

Приклад  6.7.

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

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

      {

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

           MyHelp myform = new MyHelp();

           myform.ShowDialog();

 }

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

Приклад  6.8.

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

private void helpToolStripButton_Click(object sender, EventArgs e)

{

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

}

6.5. Команди меню як прапорці

Кожна команда меню має властивість Name (ID-команди), цій властивості автоматично призначається ім'я, яке складається з тексту команди та ToolStripMenuItem.

Це ідентифікатор об'єкту, за яким можна звертатися до команди в коді.

Наприклад, в нашому редакторі в меню Параметри є команда Панель інструментів, яка дозволяє приховувати і відкривати панель інструментів.

Ії властивість Name встановлена за замовчанням як:

панельІнструментівToolStripMenuItem

Кожний об'єкт має булеву властивість Checked, яка має значення true, якщо об'єкт вибраний, і false, якщо ні.

Скористаємося цією властивістю для реалізації приховування і відображення панелі інструментів.

панельІнструментівToolStripMenuItem.Checked

Для цього в конструктор форми додамо дві команди

           toolStrip1.Visible = true;

           панельІнструментівToolStripMenuItem.Checked = true;

Перша робить видимою панель інструментів, друга – встановлює, що команда меню Панель інструментів вибрана (включає прапорець).

Крім цього в конструктор форми додамо вертикальну смугу прокручування ScrollBars.Vertical, очищення вікна редактора та такст заголовка.

Метод конструктора буде мати вигляд:

Приклад  6.9.

public Form1()

       {

           //Створення форми

           InitializeComponent();

           textBox1.ScrollBars = ScrollBars.Vertical;

           textBox1.Text = string.Empty;

           this.Text = "NkEdit - Новий документ";

           // вивести панель инструментов

           toolStrip1.Visible = true;

           панельІнструментівToolStripMenuItem.Checked = true;

}

Для приховування/відображення панелі інструментів напишемо обробник команди Панель інструментів у вигляді.

Приклад  6.9.

// Меню Параметри

//вибір команди Панель інструментів        

       private void панельІнструментівToolStripMenuItem_Click(object sender, EventArgs e)

       {

           // відобразити/приховати панель інструментів

           toolStrip1.Visible = !toolStrip1.Visible;

           панельІнструментівToolStripMenuItem.Checked = !панельІнструментівToolStripMenuItem.Checked;

}

В цьому методі команда  toolStrip1.Visible = !toolStrip1.Visible;

встановлює властивість Visible в true або false, в залежності від поточного значення.

Команда

панельІнструментівToolStripMenuItem.Checked = !панельІнструментівToolStripMenuItem.Checked;

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

Висновки

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

Контрольні питання і завдання для самостійного виконання

  1.  Який елемент управління використовується для створення структури меню?
  2.  Як виключити дублювання коду обробника команди меню і відповідної кнопки панелі інструментів?
  3.  Яке призначення клавіш швидкого доступу?
  4.  Як задати для пунктів меню клавіші швидкого доступу?
  5.  Який елемент управління використовується для створення панелі інструментів?
  6.  Обробник якої події генерується при виборі команди меню?
  7.  Як створити панель інструментів зі стандартними елементами?
  8.  Як додати на панель інструментів свою кнопку?
  9.  Як розмістити рисунок на кнопці панелі інструментів?
  10.  Як додати до кнопок панелі інструментів спливаючі підказки (ToolTip)?
  11.   Як зробити команди меню у вигляді прапорців?


 

А также другие работы, которые могут Вас заинтересовать

3096. Оценка чистой текущей стоимости 61.09 KB
  Задача №1 «Оценка чистой текущей стоимости» Предприятие рассматривает инвестиционный проект - приобретение новой технологической линии. Стоимость линии 14 тыс. усл. ден. ед. Срок эксплуатации 5 лет. Износ на оборудование начисляется исходя из норм 2...
3097. Химия радиоматериалов 98.06 KB
  Химия радиоматериалов. Определить падение напряжения в линии электропередач длиной L при температуре То1, То2 , То3, если провод имеет сечение S и по нему течет ток I. Дано Материал – Cu То1=-30C То2=0 То3=+30C L=500км S=30мм2 I=250А Найти...
3098. Философы о сущности человека 67.64 KB
  Философы о сущности человека Введение в философию Жизнь с ее сложной паутиной коллизий, наука и культура в целом (куда входят все науки, виды искусства, религия и, разумеется, философия) с их гигантскими достижениями  требуют от нас, и прежде в...
3099. Внешняя среда управления организацией 49.15 KB
  После перехода России к рыночным отношениям, стало образовываться большое количество предприятий. Основной задачей этих организаций стало выживание в подвижной и неопределённой среде. Организация должна отражать состояние внешней сред...
3100. Язык – основной элемент в культуре 37.39 KB
  Видное место в современной культурологии занимает структурализм, основные идеи которого разработаны в работах французских ученых К. Леви-Стросса, Ж. Деррида, Ж. Лакана, М. Фуко и др. Структурализм поставил задачу преодолеть описательность в культуро...
3101. Предмет политологии 41.4 KB
  Предмет политологии 1.Возникновение политологии: её предмет, законы, категории и функции. Политология – одна из самых молодых гуманитарных дисциплин. Она оформилась как самостоятельная отрасль научного знания лишь в конце 40–х гг. ХХ в. Лю...
3102. История фармацевтической технологии. Старинные лекарственные формы 56.05 KB
  Введение На протяжении истории цивилизации лекарственные  формы претерпели существенную эволюцию, обусловленную прогрессом естественнонаучных знаний. При этом одни из них исчезали, другие совершенствовались. Наряду с  этим на разных этапах...
3103. Факторы экологического риска 55 KB
  Факторы риска и их классификация. Понятия и определения В Федеральном законе РФ от 10 января 2002 года "Об охране окружающей среды" дается определение экологического риска, которое гласит, что "экологический риск - вероятность наступления собы...
3104. Топливное хозяйство. Жидкое и газообразное топливо 5.85 MB
  Топливное хозяйство. Жидкое и газообразное топливо ЖИДКОЕ ТОПЛИВО Сырая нефть представляет собой смесь жидких углеводородов различного состава, в которых могут быть растворены твердые углеводороды. Состав рабочей части топлива - Cр + Hр + Sр + Oр...