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


 

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

53391. Древняя Индия 41 KB
  Развивающая: Развивать умение пользоваться историко-географической картой, извлекать из неё знания, закрепить их с помощью работы по контурной карте. Умение переходить от одной формы работы к другой. Воспитательная: Закрепление представлений о том, что общечеловеческие достижения в культуре имеют конкретное происхождение. Представить культуру Индии как часть общемировой.
53392. США. Індіанці: пошуки вирішення проблеми. Контроль навичок - аудіювання 95.06 KB
  By the end of the lesson you should be able to reply and react appropriately to various statements. Beside, you will listen to some new information about the first Americans who came to Alaska from Asia crossing the Bering land bridge, which later became the Bering Strait. You will hear the text about American Indians and their problems.
53393. Методичні основи змісту навчання та виховання 143 KB
  В широкому плані особистість людини є інтегральною цілісністю біогенних соціогенних і психогенних елементів. Коменського великого чеського педагога – чітко позначені положення про те що весь процес навчання і виховання дітей необхідно будувати з урахуванням їх вікових і індивідуальних особливостей і виявляти ці особливості шляхом систематичних спостережень. Він вважав що в процесі виховання і навчання необхідно орієнтуватися на позитивні якості...
53394. У НАС В ГОСТЯХ ІНДІЯ 99.5 KB
  Мета: забезпечити засвоєння учнями знань про характерні риси економіко географічного положення Індії особливості природних умов і ресурсів розміщення населення й господарства культурноісторичні особливості країни; розвивати творчі здібності учнів логічне мислення формувати культуру спілкування; продовжити розвивати інтерес до предмета; формувати вміння працювати самостійно та в групах виховувати почуття доброти й милосердя до людей інших...
53395. ІНДУКЦІЯ – МЕТОД ПІЗНАННЯ ІСТИНИ 59 KB
  Як виховати цілісне мислення як сформувати ставлення до математики як до цілісної системи яка забезпечує світопізнання розвиток інтелекту показати практичне застосування логічних методів для встановлення істини у житті людини Покажемо це на прикладі вивчення теми “Індукціяâ€. У перекладі з латинської термін “індукція†означає â€œнаведенняâ€. Розрізняють кілька видів індуктивних міркувань: міркування за схемою “повна індукція†та міркування за схемою “неповна індукціяâ€. Це індукція шляхом переліку популярна індукція та...
53396. На шляху до сучасності: утвердження індустріального суспільства у провідних державах світу 91.5 KB
  Мета уроку: Систематизувати узагальнити та конкретизувати знання та уявлення учнів про розвиток провідних держав світу в 2 половині ХІХ ст. Тип уроку: урок узагальнення та систематизації знань умінь і навичок. Після цього уроку учні зможуть: Характеризувати процес завершення формування індустріального суспільства у провідних державах Європи та...
53397. Використання інформаційних технологій на уроках математики 1.49 MB
  Застосування компютерної техніки на уроках дозволяє зробити урок нетрадиційним яскравим насиченим наповнюючи його зміст знаннями з інших наочних областей що перетворюють математику з об'єкту вивчення в засіб отримання нових знань. Ефективність застосування нових інформаційних технологій на уроках математики обумовлена наступними факторами: 1 різноманітність форм представлення інформації; 2 висока степінь наочності; 3 можливість моделювання за допомогою комп’ютера різноманітних об’єктів і процесів; 4 звільнення від рутинної роботи...
53398. Засоби пошуку інформації в Інтернеті. Принципи функціонування веб-каталогів та пошукових систем. Стратегії пошуку інформації 1.56 MB
  Сьогодні на уроці продовжим вивчати сільське господарство, характеристику тваринництва, узагальнемо спеціалізацію сільського господарства, ознайомимось і оцінемо проблеми і перспективи розвитку сільського господарства, завершимо виконання практичної роботи №9, використовуючи знання з інформатики.