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.   Як зробити команди меню у вигляді прапорців?


 

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

52024. Повторення таблиць множення числа 2 і ділення на 2. Розв’язування задач 434 KB
  Розв’язування задач. Хмельницький Мета: Повторити таблиці множення числа 2 і ділення на 2; формувати вміння розв’язувати прості і складені задачі; розвивати увагу творче мислення пам’ять; виховувати інтерес до математики. а Пояснити розв’язання задачі № 678. в Пояснити розв’язання задачі яку виконували за бажанням за карткою.
52025. Збірник прикладних задач «Математика навколо нас» 3.75 MB
  Анотація Ідея створення цього збірнику виникла з приводу того що розвиток математичних знань у розумово відсталих дітей має виключно практичну важливість оскільки людині в повсякденному житті постійно доводиться оперувати арифметичними виразами здійснювати рахунок і різні операції з числовими величинами. Скільки грошей він отримає пропрацювавши 20 днів Який розфасовки пральний порошок вигідніше купити господині якщо відомо що пакет вагою 2кг 400 г коштує р. Скільки...
52026. Вправи і задачі на засвоєння таблиць додавання і віднімання числа Порівняння виразу і числа 58.5 KB
  Діти в народі говорять: Добрий гість – дому радістьâ€. 2 слайд Математична розминка Інтерактивна вправа Мозковий штурм Як називається геометрична фігура у якої три кути Який день настає після суботи Скільки сторін у квадрата Скільки місяців триває зима Як називається лінія у якої є початок і кінець  Закінч речення: тиждень триває  Скільки паличок потрібно щоб викласти 2 квадрати Молодці 2. Математичний диктант Слайди 412....
52027. Таблица умножения и деления на 7 72 KB
  Гномики обожают число 7 и надеются что его полюбите и вы Что в вашей жизни связано с числом 7 Чего бывает в жизни только 7 Вы знаете что число 7 на Руси издревле считалось волшебным. Братья Гримм Умницы Первый гномик еще мал и любит играть. Гномик хочет познакомиться с вами. 21 : 3 = 7 21 : 7 = 3 назовите компоненты Третий гномик любит решать уравнения.
52028. Наш край у 1932-1933 роках. Історія Маньківщини 57.5 KB
  Хід уроку: Епіграф: Нагадай мені інший народ щоб він зазнав такої чорної недолі як народ український Учитель української мови і літератури Відкосили косами Жниварі з ЦК А ми хліба просимо Аж болить рука Встали під закопами Ух тверді лоби.Проценко Голодомор Учитель історії: Радянське керівництво взявши курс на модернізацію промислового потенціалу країни одразу зіткнулося з трьома проблемами: коштів сировини й робочих рук для розвитку індустрії. Учитель української мови та літератури: Перед вами картина...
52029. По следам бременских музыкантов. Числа от 11 до 20 173.5 KB
  И был у мельника осёл хороший осёл умный и сильный. Долго работал осёл на мельнице таскал на спине кули с мукой и вот наконец состарился.Чтение отрывка из сказки Видит хозяин: ослабел осёл не годится больше для работы и выгнал его из дому. Испугался осёл: “Куда я пойду куда денусь Стар я стал и слабâ€.
52030. Множення дробів. Піднесення дробу до степеня 239 KB
  Мета: домогтися засвоєння учнями правил множення раціонального дробу на цілий вираз на дріб а також правила піднесення раціонального дробу до натурального степеня та виконання сумісних дій піднесення дробу до степеня та множення раціональних дробів; формувати вміння відтворювати вивчені правила та застосовувати їх під час виконання завдань на множення раціональних дробів та піднесення дробу до степеня; вдосконалювати вміння виконувати скорочення раціональних дробів та знаходити ОДЗ дробового виразу; розвивати мислення...
52031. Короткі історичні відомості (від абака до нетбука) 1.09 MB
  Обладнання: мультимедійне обладнання: проектор екран або мультимедійна дошка; програмний комплекс презентація PowerPoint Як винайшли комп’ютер підручник робочі зошити інструкція з правил техніки безпеки. Робота за комп’ютером 8 хв. Саме в Києві був створений перший в Європі комп’ютер який умів швидше за всіх рахувати А чи завжди існували комп’ютери Якими вони були в давнину Про це ми дізнаємося на сьогоднішньому уроці. Вчитель презентує у електронному вигляді новий матеріал Як винайшли комп’ютер.
52032. Дидактические основы конструирования урока математики 247 KB
  Дидактические основы конструирования урока математики. Сущность современного урока математики и основные требования к нему типологии уроков. Взаимосвязь процессов конструирования и анализа урока математики. Непосредственная разработка урока математики.