Редактори початкових установок.

Лабораторна робота № 1.

Тема: Створення Windows і консольного додатків у середовищі Microsoft Visual Studio .NET.

Мета: Вивчення середовища розробки Microsoft Visual Studio .NET і структури програми для створення додатків із застосуванням мови програмування C#.

 

1.1. Можливості середовища розробки Visual Studio .NET.

Життєвий шлях платформи .NET по-справжньому почався з появою на ринку комплексу засобів розробки нового покоління Visual Studio .NET. Його офіційне подання та продаж перших версій відбулися в лютому 2002 р. Важливість Visual Studio .NET для всієї концепції Microsoft .NET з'ясована: успішне просування платформи прямо залежить від наявності широкого кола прикладних програм, що дозволяють працювати з .NET-технологією.

Відразу після появи першої публічної бета-версії Visual Studio.NET наприкінці 2000 р. стала очевидною серйозність намірів Microsoft щодо своєї нової платформи. Розроблювачі відразу зрозуміли, що їх очікує не просто чергова модифікація інструментарію, а серйозна зміна підходу до створення додатків. Програмістам не залишалося нічого іншого, як почати освоювати нову технологію, перейти на платформу іншого постачальника, завзято продовжувати працювати в середовищі Visual Studio 6.0, чекаючи останніх днів його життя, або міняти професію.

Навіть якщо ви вже працювали з яким-небудь середовищем розробки від компанії Microsoft, будете приємно здивовані появою нових можливостей у середовищі Visual Studio .NET. Якщо ні, то вам буде багато чого освоїти. Нове середовище містить величезний набір корисних інструментів, покликаних спростити життя програмістові.

Запустіть Visual Studio .NET. Для цього після установки програми виберіть пункт меню Пуск/Програми/Microsoft Visual Studio 2005/Microsoft Visual Studio 2005. На екрані з'явиться середовище з його стартовою сторінкою Visual Studio Start Page, зображене на рис. 1.1. У лівому вікні видний список останніх виконаних проектів, а також кнопки, за допомогою яких можна відкрити раніше створений проект або створити новий. Закладка Find Samples допоможе по ключових словах виконувати пошук підходящих прикладів, записаних у відповідних розділах установочного каталогу.

Рис. 1.1. Стартова сторінка.

У нижній частині знаходиться список додаткових команд. Посилання What's New in Visual Studio 2005? познайомить вас із нововведеннями VS .NET. Інші команди являють собою посилання на різні Інтернет-ресурси.

Якщо ви випадково закрили стартову сторінку або хочете відкрити її в процесі роботи над проектом, просто виберіть пункт меню View/Other Window/Start Page.

1.2. Створення проекту.

Visual Studio 2005 — це не тільки середовище для розробки додатків мовою С#. Visual Studio 2005 дозволяє створювати додатки на мовах VB, С#, C++, формувати Setup (настановний пакет) ваших додатків і багато чого іншого. Для створення нового проекту в Visual Studio 2005, виберіть пункт меню File/New/Project... Після його виклику з'явиться вікно, аналогічне зображеному на рис. 1.2. Тут можна вибрати потрібну вам мову програмування (у лівій частині вікна) або якийсь спеціальний майстер створення додатків — цей список може поповнюватися інструментами незалежних розроблювачів. Оскільки лабораторні роботи присвячені вивченню програмуванню на С#, виберіть тип проекту Visual С#. У правій частині вікна потрібно вказати тип створюваного вами проекту. Це може бути Windows-додаток (Windows Application), консольний додаток (Console Application) і деякі інші.

Рис. 1.2. Вікно створення нового проекту.

Виберіть у правій частині вікна пункт Windows Application. Крім того, ви можете вказати назву створюваного проекту й шлях до каталогу, у якому він буде розташовуватися. Натисніть ОК. Основні частини візуального середовища розробки проекту зображені на рис. 1.3.

Рис. 1.3. Головне вікно середовища Visual Studio 2GGS .

 

У центрі перебуває головне вікно для створення візуальних форм і написання коду. Праворуч розміщається вікно Solution Explorer для керування вашими проектами, Class View для огляду всіх класів і вікно властивостей Properties.

Вікно Solution Explorer дозволяє управляти компонентами, включеними у ваш проект. Наприклад, для того щоб додати в нього нову форму, просто виберіть у контекстному меню, що відкривається при виборі правої кнопки миші, пункт Add/Windows Form (рис. 1.4). Крім контекстного меню проекту існує ще ряд контекстних меню, що дозволяють управляти окремими елементами проекту. Так, щоб перейти з вікна дизайнера у вікно коду проекту, виберіть у контекстному меню для Form1 пункт View Code. Відповідно, щоб перейти назад— View Designer. Контекстне меню є в кожного елемента дерева проекту. Використання контекстного меню - це швидкий інтерактивний спосіб навігації по проекту.

Вікно ClassView дозволяє переміщатися по всіх елементах програмного проекту, включаючи окремі процедури (рис. 1.5).

 

 

 

 

При цьому за допомогою Class View можна додавати нові методи, класи, дані. Всі ці можливості будуть доступні вам завдяки контекстним меню Class View. При цьому помітьте, що кожен елемент дерева проекту має свій тип контекстного меню. Поекспериментуйте з Class View. Це дозволить вам більш упевнено почувати себе в середовищі Visual Studio 2005 . Якщо вікно Class View відсутнє на екрані, виберіть пункт меню View/Class View.

 

1.3. Вікно властивостей Properties.

Вікно Properties дозволить вам працювати із властивостями форм та їх компонентів. Properties містить список всіх властивостей обраного в даний момент компонента. Наприклад, якщо ви оберете форму створеного додатка, тоді вікно

матиме представлені два списки: список всіх властивостей форми (з лівої сторони) і їхніх значень (із правої сторони). При цьому значення властивостей можуть бути представлені в будь-якій формі, наприклад, як текстове поле, як список що випадає припустимих значень, як вікно вибору кольорів й т. д. Якщо ви зміните значення властивості за замовчуванням, то воно буде виділено жирними кольорами. У цьому випадку контроль над внесеними вами в проект змінами стане більше наочним. Крім того, Properties дозволяє сортувати властивості або за алфавітом, або по належності до певної групи. Другим важливим завданням, що виконує Properties, є керування подіями. Для того щоб перейти на закладку подій, натисніть кнопку із зображенням блискавки вгорі вікна.

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

1.4. Вікно інструментів Toolbox.

Це вікно містить Windows Forms компоненти, які ви можете розмістити на своїй формі. Якщо такого вікна у вашому Visual Studio нема, виберіть у головному меню пункт View/Toolbox (рис. 1.8). Вікно візуально відображає найбільше часто використовувані .NET компоненти для створення додатків Windows. Toolbox має кілька закладок: Data, Components, Windows Forms, General й ін. Усі містять компоненти, які можна перетягнути мишею на форму. Закладка Windows Forms включає візуальні елементи керування, такі як кнопки, списки, дерева. Закладка Data присвячена базам даних. Закладка Components містить невізуальні компоненти, найбільш представницьким серед яких є Timer. У закладку General ви можете додати будь-який елемент із іншої закладки простим перетаскуванням.

Рис. 1.8. Інструментальна панель (Toolbox).

 

1.5. Візуальні властивості допоміжних вікон.

Не можна не відзначити деякі властивості всіх вищеописаних вікон. По- перше, всі вони можуть «прилипати» до будь-якої сторони головного вікна Visual Studio. По-друге, ховатися при втраті активності. Для того щоб наділити цією властивістю, наприклад, Solution Explorer, виберіть у контекстному меню цього

вікна пункт Auto Hide або натисніть відповідну кнопку поруч із кнопкою заголовка «Закрити».

 

1.6. Меню і панель інструментів середовища Visual Studio 2005.

Всі дії, які ви можете виконувати в середовищі Visual Studio 2005, розташовуються в головному меню. Головне меню має контекстну залежність від поточного стану середовища, тобто містить різні пункти залежно від того, чим ви зараз займаєтеся та у якому вікні перебуваєте. Крім того, більшість пунктів меню продубльовані в панелі інструментів. Visual Studio 2005 має безліч панелей інструментів. Ви можете включити або виключити панель інструментів за допомогою меню View/Toolbars (рис. 1.11).

Ті панелі інструментів, які вже відкриті, позначені в меню «галочками». Ви також можете створювати власні панелі інструментів, скориставшись пунктом цього ж меню Customize.

Головне меню Visual Studio 2005 перебуває у верхній частині середовища. У меню є всі команди, призначені для виконання дій над елементами проектів Visual Studio 2005 . Пункти меню бувають командними й спливаючими (утримуючими інші пункти меню). Назва кожного спливаючого пункту меню відбиває команди, що містяться в ньому. Наприклад, меню «File» містить команди, призначені для роботи з файлами проекту. Деякі пункти меню включають вкладені пункти з більш докладними командами. Наприклад, команда «New» з меню «File» показує меню вибору типів файлів. Найбільш часто вживані пункти меню мають «гарячі» клавіші. Так, для створення нового файлу потрібно нажати клавіші Ctrl+К

2. Створення Windows-додатка і консольного додатка.

2.1. Створення нового проекту.

Форма являє собою екранний об'єкт, звичайно прямокутної форми, який можна застосовувати для надання інформації користувачу й для обробки вводу інформації від користувача. Форми можуть мати вигляд стандартного діалогового вікна, багатодокументного інтерфейсу (MDI) або поверхні для відображення графічної інформації. Найпростіший спосіб задати інтерфейс користувача для форми - розмістити елементи керування на її поверхні.

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

Форми, як і всі об'єкти в .NET, є екземплярами класів, успадкованих від System.Windows.Forms.Form. Форма, що ви створюєте за допомогою Visual Studio Designer, є класом. Коли ви будете відображати форму під час виконання програми, цей клас буде використовуватися як шаблон для відображення вікна. Необхідно помітити, що Windows Forms надають дуже прості й у той же час потужні механізми для керування графічним інтерфейсом користувача. Якщо ви зміните яку-небудь властивість, відповідальну за відображення форми на екрані, форма сама обновиться. Такий додатковий рівень абстракції дозволяє розроблювачеві концентруватися на його завданні, не піклуючись про дрібні деталі. Форму можна створювати повністю в коді програми, однак простіше використовувати для цього Visual Studio Designer.

Підготовчі операції: Створіть у себе на жорсткому диску спеціальну папку, куди зможете зберігати приклади, наведені в даних лабораторних роботах. Деякі з них будуть використовуватися повторно, тому бажано вказувати в програмах ті ж імена, що приводяться в методичних вказівках.

Створення нового проекту з використанням середовища Visual Studio 2005 було описано в попередніх розділах. Запустіть Visual Studio 2005 і виконайте команду меню File/New/Project... У вікні, що з'явилося, виберіть Visual C# Project й Windows Application. Назвіть проект ім'ям «HelloWorld» і збережіть його в обрану самостійно папку.

У вас на екрані з'явиться порожня форма. Це стандартний шаблон нової програми Windows Forms. У вікні Solution Explorer проекту «HelloWorld» є присутніми чотири елементи: Properties, References, Form1.cs й Program.cs. Варто помітити, що файли С# мають розширення «.cs».

Для вас поки становить інтерес тільки два файли - Form1.cs й Program. cs. Form1.cs містить код, що описує вашу форму. Program.cs містить основну функцію Main(), у якій створюється об'єкт форми. Для початку змініть назву самої форми. Для цього у вікні Properties для вашої форми вкажіть властивість Name з «Form1» на «MainForm». Якщо вікно Properties відсутнє, в Visual Studio 2005 ви можете відкрити його, використовуючи меню View/Properties Window або «гарячу» клавішу Alt+Enter.

2.2. Властивості проекту.

Кожен проект має певний набір властивостей. Середовище Visual Studio 2005 дозволяє змінювати ці настроювання візуально. Виділіть в дереві Solution Explorer кореневий елемент HelloWorld. Натисніть пункт меню Properties

Закладка Application містить основну інформацію про проект.

Assembly Name — ім'я зборки.

Output Туре — тип додатка. Тут можна вибрати Windows Application, Console Application або Class Library. За замовчуванням для Windows Forms установлюється тип Windows Application.

Default Namespace — використовуваний за замовчуванням у проекті простір

імен.

Startup Object — ім'я класу, що містить метод Main, що буде викликатися при запуску додатка

Icon — шлях до файлу з піктограмою для додатка.

Resource File — ім'я файлу ресурсів.

Докладніше довідатися про застосування всіх властивостей ви зможете, звернувшись до Microsoft .NET Framework SDK Documentation, що входить до складу Visual Studio 2005 .

Крім того, вам необхідно знати про властивості на закладці Properties/Build (рис. 1.13).

Configuration - вибір конфігурації.

Conditional compilation symbols — певні під час компіляції проекту константи. Вони допомагають розроблювачам управляти ходом компілювання проекту.

Рис. 1.13. Вікно властивостей проекту «Configuration Properties/Build».

 

Optimize code — включення цієї властивості в true допомагає збільшити продуктивність вашої програми в кілька разів.

Check for Arithmetic Overflow/Underflow — контролювати вихід результату за межі припустимих значень.

Allow unsafe code - дозволяє використання в проекті ключового слова unsafe. Warning Level — визначити рівень попереджень, відображуваних при компіляції програми.

Treat Warnings As Errors — сприймати всі попередження як помилки.

Output Path — шлях, де буде сформований вихідний файл.

XML Documentation File — ім'я файлу, у який буде записуватися документація з коментарів програми. Для формування документації необхідно використовувати меню Tools/Build Comment Web Pages.

Generate Debugging Information — генерувати налагоджувальну інформацію. Ця опція повинна бути включена при налагодженні додатка.

Залишіть всі значення за замовчуванням.

2.3. Дизайнер форм.

При створенні нового додатка на екран виводиться вікно дизайнера (рис. 1.3). У цьому вікні, по суті, у графічному виді відображається код вашої програми. Дизайнер призначений для зручного й інтуїтивного створення

користувальницького інтерфейсу програми. До основних елементів дизайнера форм належать:

• Properties Window (пункт меню View /Properties Window);

• Layout Toolbar (пункт меню View/Toolbars/Layout);

• Toolbox (пункт меню View/Toolbox).

У вікні дизайнера форм відображається тільки графічне подання візуальних компонентів форми. Всі дані вашої програми зберігаються кодом програми мовою С#. Для того щоб подивитися код створеної нами форми, виберіть у контекстному меню елемента Form1.cs вікна Solution Explorer пункт View Code. Відкриється файл Form1.cs. Це і є частина програми, представленої синтаксисом мови С# і відповідальна за дизайн форми. Те ж саме ви могли написати в текстовому файлі, використовуючи, наприклад, редактор Notepad. Проект, створений Visual Studio 2005, складається із трьох файлів:

1) Program. cs - містить клас із визначенням точки входу в програму. using System;

using System.Collections.Generic; using System.Windows.Forms; namespace HelloWorld { static class Program { /// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread] static void Main()

{ Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm());

}

}}

Давайте докладніше розглянемо деякі блоки представленого вище коду.

using System;

using System.Collections.Generic; using System.Windows.Forms;

Цей код визначає, які простори імен будуть використовуватися в даному файлі. Кожен представлений рядок складається із двох частин - ключового слова using й обумовленого простору імен. Далі треба оголосити власний простір імен. namespace HelloWorld

Тут оголошений власний простір імен за назвою «HelloWorld». Клас Program реалізує метод Main.

static void Main()

{

Application.Run(new MainForm());

Функція Main задає точку входу програми, те місце, звідки почнеться виконання описаних вами методів. Усередині основної функції Main() запускається на виконання форма, визначена в класі MainForm.

2) У файлі Form1.cs представлена реалізація класу MainForm. Цей клас оголошується в тім же просторі імен HelloWorld, що й клас Program, що реалізує метод Main. Тепер, якщо хтось буде використовувати створені нами в цьому просторі імен елементи, йому доведеться використовувати повне ім'я об'єкта: HelloWorld.MainForm.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace HelloWorld

{ public partial class MainForm : Form {

public MainForm()

{

InitializeComponent();

}

}}

3) Продовження класу MainForm находиться у файлі Form 1.Designer.cs. Саме в цьому файлі є функція InitializeComponent() з визначенням елементів форми.

namespace HelloWorld { partial class MainForm { private System.ComponentModel.IContainer components = null; protected override void Dispose(bool disposing)

{ if (disposing && (components != null))

{

components.Dispose();

}

base.Dispose(disposing);

}

#region Windows Form Designer generated code private void InitializeComponent()

{

this.SuspendLayout();

//

// MainForm

this.AutoScaleDimensions = new System.Drawing.Size(6F, 13F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(292, 266); this.Name = "MainForm"; this.Text = "Forml"; this.ResumeLayout(false);

}

#endregion

}

}

2.4. Компіляція програми.

Для того, щоб відкомпілювати код програми, виберіть у меню Build/Build HelloWorld. Унизу середовища розробки з'являться вікна - ErrorList (список помилок) і Output. Якщо ваша програма містить помилки, то вона не відкомпілюється, поки ви їх не виправите. Список помилок містить інформацію про причину появи кожної помилки із вказівкою точного місця розташування помилки. При подвійному кліку на рядку в списку помилок Visual Studio відобразить код програми з помилкою.

Спеціальне вікно Output допомагає програмістам стежити за ходом побудови проекту. Відкрити це вікно можна через пункт меню View/Output. Ви можете побачити в ньому хід процесу побудови вашої програми. Для нашого проекту результат компіляції представлений у такий спосіб:

-і-і-і Build started: Project: HelloWorld, Configuration: Debug Any CPU -і-і-і

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4/define:DEBUG;TRACE /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50 72 7\System.Data. dll

/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50 72 7\System.Deplo yment.dll

/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50 72 7\System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50 72 7\System.Drawi ng.dll

/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50 72 7\System.Windo ws.Forms.dll

/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50 72 7\System.Xml.d ll /debug+ /debug:full /optimize- /out:obj\Debug\HelloWorld.exe /resource:obj\Debug\HelloWorld.MainForm.resources /resource:obj\Debug\HelloWorld.Properties.Resources.resources /target:winexe Forml.cs Forml.Designer.cs Program.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs

Compile complete -і 0 errors, 0 warnings

HelloWorld -> C:\Documents and Settings\User\Moi документи\Visual Studio 2005\Proj ects\HelloWorld\HelloWorld\bin\Debug\HelloWorld.exe ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped

Це означає, що проект успішно побудований. Тепер ви можете запустити

його.

2.5. Запуск додатка.

Запуск додатка із середовища Visual Studio 2005 можливий у двох режимах: з налагодженням або без. Для запуску додатка в режимі налагодження необхідно вибрати пункт меню Debug/Start. Цей режим знадобиться вам для налагодження створюваного додатка в ході виконання програми. Якщо ж ви хочете запустити додаток тільки для того, щоб подивитися результати виконаної роботи, скористайтеся пунктом меню Debug/Start Without Debugging. Запустіть додаток у режимі «без налагодження» (Debug/Start Without Debugging). На екрані з'явиться вікно вашого першого додатка (рис. 1.14).

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

2.6. Розширення функціональності програми.

Навряд чи якусь користь можна витягти з порожньої форми. Давайте розширимо наш додаток, додавши до нього кнопку. Для цього перемкніться у вікно дизайнера та перетягніть із панелі Toolbox елемент Button на вашу форму. Помістіть цю кнопку по центру форми. Тепер необхідно наділити її функціональністю. Для цього змініть деякі властивості кнопки у вікні Properties:

Name: HelloWorld Text: Натисни мене

Тепер необхідно обробити натискання кнопки. Для цього у вікні Properties перемкнетеся на закладку Events. Подія Click призначена для обробки натискання кнопки. Клацніть два рази лівою кнопкою миші по комірці Click. Visual Studio 2005 перемкне вас у вікно коду програми. У код були додані наступні рядки:

private void HelloWorld_Click(object sender, System.EventArgs e)

{

}

Додайте в код наступний рядок:

private void HelloWorld_Click(object sender, System.EventArgs e)

{

MessageBox.Show("Здравствуй,мир");

}

Відкомпілюйте і знову запустіть програму. Цього разу додаток містить додану вами кнопку «Натисни мене». Кликніть на ній мишею.

2.7. Створення консольного додатка.

При вивченні основ програмування на C# для створення прикладів зручніше використовувати консольні додатки. Код консольного додатка небагато коротший, ніж код додатка WindowsForms. Крім того, використання консольного додатка позбавить вас від тривалого процесу створення GUI частини програми й дозволить сконцентруватися на розгляді функціональної частини додатків.

Для роботи з консоллю в. NET використовується клас Console. Переваги цього класу полягають у двох аспектах: всі його методи є статичними, так що не потрібно створювати для використання його екземпляр. Він поєднує в собі уведення, вивід і вивід помилок. За замовчуванням уведення/вивід провадиться на стандартну консоль (якщо її не має, наприклад, у віконних додатках, вивід просто не здійснюється), але пристрої уведення й виводу можна змінити.

Для роботи з консоллю звичайно використаються чотири методи: Read, ReadLine, Write й WriteLine, з них перших два - для уведення, останні - для виводу.

Метод Read читає символ з потоку уведення. Він повертає значення типу int, рівне коду прочитаного символу, або -1(мінус один), якщо нічого прочитано не було. Приведемо приклад програми:

 

do

{ int i = Console.Read(); if (i != -1)

Console.WriteLine("{0} {1} ", (char)i, i) ;

else

break;

} while (true);

Ця програма показує на екрані уведені символи і їхні коди.

Метод ReadLine читає з потоку уведення рядок тексту (він завершується символом переведення рядка або повернення каретки). Метод повертає об'єкт типу string або null, якщо уведення здійснити не вдалося.

do

{string s = Console.ReadLine(); if (s != null)

Console.WriteLine("Уведений рядок: " + s); else

break; } while (true);

Метод Write виводить на екран значення переданої йому змінної. Він визначений для всіх базових типів і підтримує форматовані рядки. Таким чином, можна або викликати Write із указаним значенням як параметр:

Console.Write (1);

Console.Write (0.754) ;

Console.Write("Hello!");

або передати рядок форматування й список значень. У рядку форматування застосовується безліч модифікаторів. Тут необхідно відзначити лише те, що замість «{n}» підставляється n-й вхідний параметр (нумерація починається з 0): string Name="Студент";

Console.Write("Привіт, {0}", Name);

Метод WriteLine відрізняється від Write тільки тим, що виводить символ переведення рядка наприкінці.

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

Відкрийте вікно створення нового проекту, вибравши меню File/New project. У списку мов виберіть Visual С#, у списку шаблонів - Console Application. Укажіть ім'я для вашого додатка «TestConsole». Відкриється вікно коду програми на С#. Код програми представлений нижче. using System;

using System.Collections.Generic; using System.Text; namespace TestConsole { class Program

{ static void Main(string[] args)}

}

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

static void Main(string[] args)

{

//оголошуємо змінну для зберігання рядка уведених даних string strText;

//виводимо на екран інформаційне повідомлення Console.WriteLine("Уведіть Ваше ім’я.");

//уводимо дані з консолі strText = Console.ReadLine();

//Виводимо на екран оброблені дані Console.WriteLine("Здрастуйте {0}", strText);

}

Запустіть програму на виконання.

Завдання

1. Створіть на формі Windows-додатка кнопку «Вихід», при натисканні на яку закривається форма.

2. Створіть на формі Windows-додатка кнопку «Кольори фону», при натисканні на яку випадковим чином змінюється фон форми.

3. Створіть проект Windows-додатка із двома формами «Форма 1» й «Форма 2». При запуску додатка на екрані спочатку з'являється «Форма 1», а при закритті першої форми з'являється «Форма 2».

4. Створіть проект Windows-додатка із двома формами «Форма 1» й «Форма 2». На першій формі створіть дві кнопки «Вихід» (натискання на яку закриває «Форму 1») і кнопку «Перехід» (натискання на яку відображає «Форму 2», при цьому «Форма 1» не закривається). На «Формі 2» повинні бути кнопки «Вихід» (закриття всього додатка) і «Закрити» (закриття тільки другої форми).

5. Створіть консольний додаток, у якому вводяться два цілих числа із клавіатури і виводиться на екран їх сума.

Контрольні питання.

1. Для чого призначене середовище розробки Visual Studio 2005?

2. Як створити новий проект Visual Studio 2005?

3. Для чого призначене вікно ClassView?

4. Які компоненти містить вікно інструментів Toolbox?

5. Яке призначення вікна Properties?


Лабораторна робота № 2

Тема: Створення в Windows Forms форми для введення даних змінного розміру.

Мета: Навчити використовувати різні елементи управління у програмах Windows Forms.

1. Створення форми з різними видами кнопок.

Програма (рис. 1.1.) повинна буде виконувати наступні функції: радіокнопки задають текст повідомлення, що буде виводитися по натисканню на звичайну кнопку. Прапорець повинен визначати — чи виводити повідомлення. Створіть новий Windows Application проект за назвою TestButtons. Збережіть його в створену для ваших проектів папку. Змініть деякі властивості створеної форми:

Name - «TestButtonsForm»

Text - «Тест для кнопок»

Тепер додайте на вашу форму один елемент керування GroupBox, три елементи RadioButton, один елемент CheckBox й один елемент Button. На рис. 1 показане зразкове розташування елементів. Ви можете розмістити елементи довільним образом. Однак помітьте, що всі три радіокнопки повинні бути поміщені в один GroupBox. Інакше вони не будуть зв'язані між собою.

Рис.1. 1. Проектування форми для додатка TestButtons.

Тепер змініть деякі властивості доданих елементів:


Button1:

Text - Показати повідомлення

groupBox1:

Text - Виберіть текст повідомлення

radioButton1:

Text - Перше повідомлення

radioButton2:

Text-Друге повідомлення

radioButton3:

Text -третє повідомлення

checkBox1:

Text - Показувати повідомлення

Checked - True


Тепер звернемося до коду нашої програми, що створило середовище Visual Studio .NET. Середовище створює два основних файли з кодом - код дизайнера форм TestButtons.Designer.cs) і основний код програми (Program.cs).

Додайте в тіло функції button1_Click наступний код:

private void button1_Click(object sender, EventArgs e)

{

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

string strMessage = "";

//визначаємо яка саме радіокнопка відзначена і вибираємо відповідно до цього

//текст виведеного повідомлення перевіряємо першу радіокнопку

if (radioButton1.Checked == true)

{

//якщо відзначено саме цю кнопку то копіюємо текст кнопки в змінну

strMessage = radioButton1.Text;

}

//перевіряємо другу радіокнопку

else if (radioButton2.Checked == true)

{

//якщо відзначено саме цю кнопку то копіюємо текст кнопки в змінну

strMessage = radioButton2.Text;

}

//перевіряємо третю радіокнопку

else if (radioButton3.Checked == true)

{

//якщо відзначено саме цю кнопку то копіюємо текст кнопки в змінну

strMessage = radioButton3.Text;

}

//перевіряємо, чи встановлений прапорець розв'язний вивід повідомлення

//якщо так, то виводимо обране повідомлення на екран

if (checkBox1.Checked == true)

MessageBox.Show("Ви вибрали " + strMessage);

}

Відкомпілюйте й запустіть програму. Виберіть першу радіокнопку «перше повідомлення». Натисніть кнопку Показати повідомлення. На екрані з'явиться напис: Ви вибрали перше повідомлення Тепер приберіть прапорець Показувати повідомлення. Натисніть кнопку Показати повідомлення. На екрані нічого не повинно з'явитися. Якщо програма працює в строгій відповідності з даним описом, виходить, ви все зробили вірно.

2. Створення форми з використанням списків.

Необхідно написати програму, призначену для обліку даних про учасників змагань. Програма буде містити два списки - ComboBox, для уведення інформації про учасників, і CheckedListBox, для зберігання й обробки даних. За допомогою списку ComboBox користувач буде вибирати прізвища осіб, який необхідно додати в список учасників. Дві кнопки на формі будуть додавати або видаляти учасників зі списку.

Створіть новий Windows Applications проект за назвою TestLists. Збережіть його в створену для наших проектів папку. Перейменуйте файл Form1.cs в TestListsForm.cs. Тепер додайте на вашу форму наступні елементи керування:

• GroupBox, і помістите в нього CheckedListBox

• ComboBox

• два елементи Button.

Приблизне розміщення елементів представлене на рис 2.1.

Рис. 2.1. Проектування форми для додатка TestLists.

Ви можете розмістити елементи довільно. У даному прикладі можна було обійтися й без елемента GroupBox, тому що він призначений тільки для оформлення інтерфейсу програми. Однак візьміть собі за гарну звичку завжди поміщати списки усередину GroupBox елементів. Це зробить ваші програми більш привабливими.

Змініть деякі властивості створеної форми:


Text -«робота зі списками»

Тепер змінимо властивості елементів керування:

groupBox1:

Text - «список учасників»

checkedListBox1:

Name - memberList

comboBox1:

Name - peopleList

Text -«»

button1:

Name - buttonAdd

Text - «Додати»

button2:

Name - buttonDelete

Text - «Видалити»


Елементи керування ComboBox й CheckedListBox можуть бути проініціалізованими за допомогою дизайнера середовища VisualStudio.Net. Для зберігання елементів списків дані компоненти мають властивість Items.

Властивість Items сама по собі є масивом рядків. Давайте проініціалізуємо елемент керування ComboBox, що має ім'я peopleList, списком прізвищ передбачуваних учасників змагань. Для цього у вікні властивостей peopleList виберіть властивість Items. Відкрийте вікно StringCollectionEditor, натиснувши на кнопку із трьома крапками в полі Items. Додайте в запропонований список три прізвища: Іванов, Петров, Сидоров.

А також додайте оброблювачі для кнопок Додати й Видалити, два рази клацнувши лівою кнопкою миші по кожній із кнопок. Підготовчий етап до написання програми завершений. Збережіть зроблені вами зміни. Проаналізуйте код програми, що було згенеровано середовищем (файли TestListsForm.cs й TestListsForm.Designer.cs).

Зараз необхідно додати оброблювачі для кнопки «Додати» й «Видалити».

Як відомо з вихідних даних, кнопка «Додати» повинна заносити рядок, обраний у ComboBox, у список учасників. Для цього змініть функцію buttonAdd_Click так, як показано нижче:

private void buttonAdd_Click(object sender, System.EventArgs e)

{

//працюємо зі списком для уведення прізвищ перевіряємо обраний елемент у списку

if(peopleList.Text.Length != 0)

{

//якщо елемент обрано, то переносимо його в список учасників

memberList.Items.Add(peopleList.Text);

}

else

{

//якщо елемент не обрано, то видаємо інформаційне повідомлення

MessageBox.Show("Виберіть елемент у списку для уведення або

введіть новий.");

} }

Опис роботи функції наведено разом з її кодом. Функція memberList.Items.Add додає новий елемент у список memberList. При цьому параметром функції є значення властивості peopleList.Text, що вибирає користувач. Тепер залишилося реалізувати видалення елементів зі списку. Для цього введіть код для функції buttonDelete_Click.

private void buttonDelete_Click(object sender, System.EventArgs e)

{

//поки список позначених елементів не порожній

while(memberList.CheckedIndices.Count > 0)

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

//при цьому список позначених елементів

//автоматично обновляється

// щоразу нульовий елемент із CheckedIndices

//буде містити індекс першого позначеного

// у списку об'єкта

memberList.Items.RemoveAt(memberList.CheckedIndices[0]) ;

//при видаленні зі списку останнього позначеного елемента

//CheckedIndices.Count стане рівним нулю

//і цикл автоматично завершиться

}

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

Для засвоєння інформації про роботу з вищевказаними компонентами, давайте розглянемо приклад. Напишемо додаток, у якому бігунок й елемент керування NumericUpDown управляють індикатором прогресу. Додаткова умова: бігунок й NumericUpDown повинні працювати синхронно. Тобто, при зміні значення одного елемента, значення іншого повинне змінюватися автоматично на ту ж величину.

Створіть новий Windows Application проект за назвою TestIndicator. Збережіть його в створену для наших проектів папку. Перейменуйте файл Forml.cs в TestIndicatorForm.cs. Тепер додайте на вашу форму наступні елементи керування:

• TrackBar

• ProgressBar

• NumericUpDown.

Зразкове розміщення елементів зображене на рис 3.

Рис. 3. Проектування форми додатка TestIndicator.

Змініть властивості елементів керування. Властивості елемента TrackBar1:

Maximum —100

TickStyle — Both

Змініть значення властивості Text форми на «Керування рухом».

Проаналізуйте код програми.

Елементи numericUpDown1 й trackBar1 є керуючими, а елемент progressBarl - керованим. Давайте задамо оброблювачі подій для керування індикатором прогресу. Отже, компонент TrackBar має подію Scroll, що призначена для обробки переміщення покажчика бігунка. Створіть функцію оброблювач для події Scroll, клацнувши два рази покажчиком миші по імені події у вікні властивостей. У код програми додасться функція з ім'ям trackBar1_Scroll. Змініть її код так, як показано нижче:

private void trackBar1_Scroll(object sender, System.EventArgs e)

{ int Value = trackBar1.Value;

numericUpDown1.Value = Value;

progressBar1.Value = Value;

}

Тепер при русі курсору бігунка будуть змінюватися положення індикатора прогресу й значення елемента numericUpDown1. Однак це ще не повна синхронність роботи елементів, тому що керування повинне вестися із двох елементів: бігунка й регулятора числових значень (NumericUpDown), а в нас зараз керування можливо лише від бігунка. Давайте додамо оброблювач події ValueChanged для елемента numericUpDown1. Для цього клацніть два рази вказівником миші по імені дії ValueChanged в вікні властивостей. В код програми додасться функція з ім’ям numericUpDown1_ValueChanged. Змініть її вміст аналогічно функції trackBar1_Scroll.

private void numericUpDown1_ValueChanged(object sender,System.EventArgs e)

{ int Value = (int)numericUpDown1.Value;

trackBar1.Value = Value;

progressBar1.Value = Value;

}

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

Завдання

1. Створіть Windows-додаток, на формі якого визначите наступні елементи:

а) радіокнопки, які управляють вибором зображення тла форми (4 варіанти. При виборі радіокнопки відразу змінюється тло форми).

if (radioButton1.Checked == true)

{ pictureBox1.Image = Image.FromFile("C:\\11.jpg",true);}

б) у комбінованому списку вибирається заголовок форми (4 варіанти).

в) елементи NumericUpDown управляють розмірами форми; при зміні розмірів форми за допомогою миші повинні змінюватися значення в елементах NumericUpDown.

Контрольні питання

1. Перелічіть види елемента керування «Кнопки».

2. У чому відмінність ListBox від ComboBox?

3. За допомогою чого без клавіатури можна вводити числові значення в поле для уведення?

4. За що відповідає властивість Items?

5. Для чого призначена функція RemoveAt?


Лабораторна робота № 3

Тема: Елементи управління програми.

Мета: Навчити використовувати різні елементи управління у програмах Windows Forms.

1. Добавление своєї вкладки в панель Toolbox оболонки

У панелі Toolbox є можливість додавати свої вкладки і копіювати в них потрібний набір інструментів з інших вкладок. Додати вкладку можна, клацнувши правою кнопкою миші в будь-якому місці панелі Toolbox і виконавши команду контекстного меню Add Tab. Видалити вкладку можна, клацнувши правою кнопкою миші на заголовку відповідної вкладки і виконавши команду Delete Tab. Копіювати потрібні компоненти з однієї вкладки в іншу можна виконанням команд контекстного меню Copy і Paste.

· Через панель Solution Explorer відкрийте будь-який файл проекту в режимі дизайну, щоб стала доступна панель інструментів Toolbox. Клацніть правою кнопкою миші на будь-якому місці панелиToolbox і через контекстне меню виконаєте команду Add Tab

· Присвойте доданій вкладці ім'я "Моя вкладка" і розкрійте її

2. Приєднання COM -объекта до проекту

Передусім треба простежити за тим, щоб перед функцією Main() у файлі Start.cs стояв атрибут [STAThread], який повідомляє середовище виконання, що основний програмний потік застосування повинен використовувати однопоточну модель. Це необхідно для правильної взаємодії з підсистемою COM.

 

namespace MediaPlayer.cs

{

static class Program

{

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form1());

}}}

· Клацніть на новій вкладці правою кнопкою миші і виконаєте команду контекстного меню Choose Items

· У вікні, що з'явилося, виберіть вкладку COM Components, знайдіть в списку Windows Media Player, відмітьте його і клацніть на кнопці OK

3. Додавання до програми нової форми і її розробка

· Через меню оболонки виконаєте команду Project/Add Windows Form, щоб додати до проекту нову форму, і в діалоговому вікні, що з'явилося, задайте ім'я файлу форми MediaPlayer.cs

4. Візуальне створення і налаштування COM -объекта

· Помістіть на форму з вкладки "Моя вкладка" компонент плеєра.

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

Деякі властивості компонента плеєра
Властивість Пояснення
Rate Темп відтворення. Якщо встановити його значення, наприклад, рівним 2, то файл програватиметься в подвоєному темпі
PlayCount Скільки разів повторювати програвання файлу. При значенні 0 відтворення файлу повторюватиметься нескінченно
FileName Файл для програвання
Volume ((німий=0) Початковий стан кнопки включення звуку
ShowControls Показувати або немає вбудовану панель управління плеєром
ShowTracker ((буксир) Показувати або немає повзунок пошуку програвача
ShowAudioControls Показувати або немає елементи управління динаміком
ShowDisplay Показувати або немає інформаційну панель з відомостями про файл, що програється
ShowPosicionControls Відключає панель управління позицією голівки програвача
CurrentPosition Містить значення, на якій секунді знаходиться в даний момент відтворення файлу
Volume Гучність звуку. Число 0 - найгучніший звук. Негативне число - 10000 означає повну тишу
Duration Властивість тільки для читання, доступно програмно. Містить загальну тривалість файлу, що програється, в секундах

5. Додавання власних елементів управління

Продублюємо вбудовані елементи управління плеєром своїми. Ці дії виконуватимемо послідовно крок за кроком, відразу програмуючи і перевіряючи їх роботу.

· Збільште вниз розмір форми так, щоб звільнити місце для елементів управління. Розмістите на формі з вкладки Containers панелі Toolbox елемент управління GroupBox, який служитиме контейнером для наших елементів. Задайте йому властивості: Name=groupBox, Dock=Bottom, Text="Елементи контролю"

· Помістите у верхній частині контейнера groupBox чотири кнопки Button. Кнопки поміщайте так: клацайте на компоненті Button вкладки Common Controls панелі Toolbox один раз, потім клацайте усередині контейнера groupBox. Контейнер для кнопок буде батьком і може передавати їм значення своїх властивостей, наприклад, місце розташування, колір

· Вирівняйте кнопки, використовуючи панель інструментів Layout оболонки.

· Замкніть елементи управління груповою командою Locked/true, щоб випадково не порушити дизайн

 

Програмування кнопок

Кнопка btnOpen повинна завантажувати файл, призначений для програвання. Скористаємося стандартним діалогом відкриття файлу, передбаченим в бібліотеці FCL.

· Помістите з вкладки Dialogs панелі Toolbox компонент OpenFileDialog. Це невізуальний компонент (що не відображується на формі на етапі проектування, а розміщуваний в підвалі вікна редагування оболонки), тому його екземпляр можна створити подвійним клацанням на піктограмі компонента

· Настройте об'єкт діалогу відкриття файлу відповідно до таблиці через панель Properties, заздалегідь виділивши його в підвалі графічного редактора

Властивості екземпляра класу OpenFileDialog організації стандартного діалогу
Елемент Властивість Значення
OpenFileDialog Name   openFilePlayer
Filter 1234567891011 Wave(*.wav) |*.wav| Dialogic VOX ADPCM (*.vox) |*.vox| InterVoice (*.ivc) |*.ivc| Macintosh AIFF (*.aif,*.aiff,*.snd) |*.aif,*.aiff,*.snd| MP3 Audio (*.mp3) |*.mp3| Sound Designer 1 (*.dig,*.sd) |*.dig,*.sd|Video for Windows (*.avi) |*.avi|Windows Media (*asf) |*asf|Windows Media Audio (*.wma) |*.wma|Windows Media Video (*.wmv) |*.wmv|All Files (*.*) |*.*

Властивість Filter призначена для управління користувачем типом файлів, що відображуються, а властивість FilterIndex встановлює, який фільтр з'явиться першим при запуску вікна. Фільтри у свойстві Filter слідують парами один за одним "Назва фільтру|шаблон_фільтру" і розділяються символом "Вертикальна риса".

· Розмістіть в обробнику кнопки «Відкрити» наступний код:

openFileDialog1.InitialDirectory = System.IO.Directory.GetCurrentDirectory();

openFileDialog1.ShowDialog();

Player1.URL = openFileDialog1.FileName;

· В обробнику кнопки «Відтворити» наступний код:

Player1.Ctlcontrols.play();

Завдання

1. Створити програму програвання музичних та відеофайлів згідно наведеної інструкції. Результат повинен відповідати зразку поданому нижче.

2. Згідно прикладу реалізувати виконання подій для кнопок «Пауза» та «Зупинити».

3. Добавити до проекту головне меню і продублювати команди з панелі контролю.

4. Для реалізації вимкнення звуку «Тиша» скористайтесь кодом:

if (checkBox1.CheckState == CheckState.Checked)

{ Player1.settings.volume = 0; }

else {

Player1.settings.volume = 50; }

Контрольні питання.

1. Як можна додати вкладку?

2. Вкажіть послідовність приєднання COM -объекта до проекту

3. Назвіть основні Властивості класу OpenFileDialog.

 


Лабораторна робота № 4

Тема: Створення багатовіконних додатків.

Мета: Навчити використовувати елементи управління у програмах Windows Forms.

1.Створення багатовіконного додатка.

Для створення MDI-додатка, по-перше, необхідно, щоб розв'язування користувачем завдання вимагало одночасно кількох відкритих документів. Прикладом завдань такого роду є текстовий редактор або програма перегляду документів. По-друге, необхідно передбачити пункт меню Вікно, що дозволяв би користувачеві змінювати положення відкритих вікон одне відносно другого (накладаючи їх одне на одного, наприклад каскадно) і надавав би йому список всіх відкритих вікон. Ще однією особливістю MDI-додатків є те, що якщо є деяке відкрите вікно й у цьому вікні існує якесь меню, то воно повинне бути інтегроване в основне меню додатка. Будь-який MDI-додаток складається принаймні із двох різних вікон. Перше вікно називається MDI-контейнером (або батьківською формою), а вікно, що може бути відкрито в контейнері, називається дочірнім MDI-вікном (або дочірньою формою). Батьківська форма може містити кілька дочірніх вікон. Тільки одне з дочірніх вікон може бути активним в один момент часу. Перш ніж переходити до виконання більш складних завдань, розберемо невеликий приклад, у якому виконуються всі ці кроки.

1. Створіть нове Windows Application і назвіть його MDIBasic.

2. Виберіть форму і задайте їй наступні властивості:

Властивість – Значення

Name – frmContainer

IsMdiContainer – true

Text – Батьківська форма

WindowState – Maximized

3. Додайте нову форму до рішення, вибравши пункт Windows Form з меню Project | Add New Item (тип елемента, що додається, Windows Form). Назвіть цю форму frmChild. Весь код, необхідний для того, щоб вивести дочірню форму, розташовується в конструкторах форм. Спочатку змініть конструктор дочірнього вікна: public frmChild (MDIBasic.frmContainer parent)

{ InitializeComponent();

this.MdiParent = parent; }

Виконаємо вивід форми на екран у конструкторі MDI-контейнера:

public frmContainer()

{ InitializeComponent();

MDIBasic.frmChild child = new MDIBasic.frmChild(this); child.Show(); }

Ми створюємо новий екземпляр дочірнього класу і передаємо його конструкторові за допомогою ключового слова this, що являє собою поточний екземпляр класу MDI-контейнера. Потім викликаємо метод Show() для виводу нового екземпляра дочірньої форми. Якщо потрібно вивести більше одного дочірнього вікна, то потрібно повторити два виділені вище в коді рядка для кожного вікна.

2. Створення основного меню програми.

Створіть основне меню програми. Додайте в меню пункти &Файл й &Вікно. Задайте їхнім властивостям Name значення MenuItemFile й MenuItemWindow відповідно. Додайте в меню &Файл наступні пункти:

Text (Текст) Name (Ім'я)

&Створити нове вікно MenuItemNewWindow &Вихід MenuItemExit Пункт меню Створити нове вікно буде призначений для створення дочірніх вікон, а пункт меню Вихід для завершення роботи додатка. Між пунктами Створити нове вікно й Вихід додайте горизонтальну розділову лінію. Пункт меню &Вікно буде містити список всіх відкритих дочірніх вікон. Така можливість закладена в меню автоматично. Для цього необхідно привласнити властивості MdiWindowListItem основного меню menuStrip1 ім'я пункту меню Вікно, тобто menuItemWindow.

Створення дочірніх вікон повинне відбуватися при виборі пункту меню Створити нове вікно. Для цього нам необхідно створити оброблювач цього пункту меню. Клацніть два рази покажчиком миші по імені події Click пункту меню Створити нове вікно у вікні властивостей. У код програми додасться оброблювач події Click з ім'ям MenuItemNew_Click. Додайте до цього оброблювача події представлений нижче код:

private void MenuItemNewWindow_Click(object sender, EventArgs e)

{ // Створення нового екземпляра дочірньої форми

frmChild newChild = new frmChild(this);

// Вивід створеної форми

newChild.Show(); }

У функції створюється екземпляр класу frmChild з ім'ям newChild. Об'єкт newChild -це дочірнє вікно, оскільки в конструкторі класу його властивості MdiParent привласнюється посилання на батьківське вікно. Таким чином, батьківською формою створюваного вікна є головна форма додатка. Усе, що залишається зробити, це відобразити форму на екрані. Для цього використовується метод Show(). Додайте також оброблювач пункту меню Вихід:

private void MenuItemExit_Click(object sender, EventArgs e)

{ Application.Exit(); }

Запустіть програму. Виберіть із меню пункт Файл/Створити нове вікно. На екрані з'явиться дочірнє вікно з ім'ям frmChild (рис.2).

Рис 2. Зовнішній вигляд готового MDI додатка.

3. Створення багатовіконного текстового редактора.

Створену програму MDIBasic необхідно наповнити функціональністю. Для цього на дочірню форму frmChild додайте один керуючий елемент RichTextBox. Назвіть його rtfText і привласніть його властивості Dock значення Fill, для того щоб вікно редагування заповнило всю форму цілком. Контекстне меню - це меню, що відкривається, коли користувач клацає правою кнопкою миші на якому-небудь об'єкті, розташованому у формі. Створити контекстне меню можна за допомогою переносу такого меню у форму й додавання до нього необхідних пунктів. Для того щоб прив'язати контекстне меню до якого-небудь керуючого елемента у формі, варто вибрати відповідний керуючий елемент і привласнити його властивості ContextMenuStrip покажчик на створене вами контекстне меню. Створіть контекстне меню для дочірньої форми contextMenuStrip1 з наступними пунктами:

Text (Текст) Name (Ім'я)

Напів&жирний MenuItemBold

&Курсив MenuItemItalic

Під&креслений MenuItemUnderline

Тепер можна перейти до обробки повідомлень контекстного меню. Для додавання оброблювача подій Сlick виконайте подвійного щиглика мишею на пунктах контекстного меню й внесіть зміни в створені функції, наприклад, оброблювач пункту Напівжирний повинен виглядати в такий спосіб:

private void MenuItemBold_Click(object sender, EventArgs e)

{ Font newFont = new Font(rtfText.SelectionFont, //1

(rtfText.SelectionFont.Bold ? //2

rtfText.SelectionFont.Style & ~FontStyle.Bold : //3

rtfText.SelectionFont.Style | FontStyle.Bold)); //4

rtfText.SelectionFont =newFont; //5 }

У цій функцій створюється новий шрифт на основі шрифту, що використовується в даний момент у вікні RichTextBox. Якщо стиль шрифту вже заданий, то видаляємо його з нового шрифту, у противному випадку додаємо необхідний стиль у шрифт. Після цього привласнюємо новий шрифт обраному тексту. У функції икористовується тернарний оператор порівняння. У рядку 2 ми здійснюємо перевірку, чи дорівнює значення властивості Bold обраного шрифту true. Якщо так, то необхідно сформувати новий стиль для створюваного шрифту, у якому будуть збережені всі наявні в нього стилі за винятком виділення жирним шрифтом, чим і займається код, розташований між символами ? і : на рядку 3. Код, розташований на рядку 4 – відразу після двокрапки – буде виконуватися в тому випадку, якщо поточне значення властивості Bold дорівнює false, причому цього разу ми додаємо виділення жирним шрифтом. Вся послідовність подій міститься в круглих дужках – цей прийом досить часто використовується для відділення логіки тернарного оператора від іншого коду, хоча в цьому випадку користь від такого виділення не представляється очевидною. Аналогічно змініть код оброблювачів пунктів Курсив і Підкреслений, установлюючи відповідний стиль шрифту (FontStyle).

4. Об'єднання меню батьківської й дочірньої форм.

Дії, які може виконувати батьківська форма, досить обмежені, є тільки команда Створити. Створіть основне меню дочірньої форми й додайте в нього наступні елементи:

Text (Текст) - Name (Ім'я)

&Файл - MenuItemFile &Створити - MenuItemNew &Відкрити - MenuItemOpen

&Зберегти - MenuItemSave

Якщо запустити додаток, то можна побачити, що пункт Файл дочірнього вікна поміщений після меню Файл і Вікно батьківського вікна. Причина цього полягає в тім, що за замовчуванням для пункту Файл дочірнього вікна встановлені властивості MergeAction й MergeIndex рівними Append та -1 відповідно. Це означає, що даний пункт меню додається в кінець меню батьківського вікна. Установіть властивість MergeAction у значення MatchOnly, а властивість Visible у значення true. У цьому випадку пункти меню з однаковими іменами будуть об'єднані. Крім того, поміняйте властивості для наступних пунктів:

Text MergeAction MergeIndex

&Створити - Insert 1 &Відкрити -Insert 2 &Зберегти - Insert 3

Тепер варто додати код для обробки пунктів меню. Ми постараємося не ускладнювати методи, що відповідають пунктам Створити, Відкрити, Зберегти, і для демонстраційних цілей будемо використати фіксований файл. Для того, щоб додати оброблювач подій Click у який-небудь пункт меню, варто просто двічі клацнути на ньому мишею. Почнемо з пункту меню Створити:

private void MenuItemNew_Click(object sender, EventArgs e)

{ this.rtfText.Clear(); }

Параметр sender являє собою посилання на пункт меню, на якому відбувся клік мишею. Повторіть процедуру для пунктів Відкрити, Зберегти.

private void MenuItemOpen_Click(object sender, EventArgs e)

{this.rtfText.LoadFile("test.rtf"); }

private void MenuItemSave_Click(object sender, EventArgs e)

{ rtfText.SaveFile("test.rtf"); }

Запустіть програму.

5. Присвоєння новому дочірньому вікну власного заголовка.

Закриття активного дочірнього вікна. При запуску вашого багатовіконного додатка на екран відразу виводиться дочірнє вікно. Аналогічно коли відбувається щиглик мишею на пункті Створити нове вікно, створюється нове вікно. При цьому виникає проблема. На даний момент всі вікна мають один заголовок - frmChild, і це не дозволяє розрізняти їх у списку MdiList. Для того щоб виправити ситуацію, додамо в конструктор форми

frmChild ще один параметр, у якому будемо передавати текст, призначений для виводу як заголовок знову створюваного вікна:

public frmChild (MDIBasic.frmContainer parent,string caption)

{ InitializeComponent(); this.MdiParent = parent; this.Text = caption; }

Ця зміна означає, що необхідно змінити виклик конструктора, що створюється в конструкторі контейнера:

public frmContainer()

{ InitializeComponent();

MDIBasic.frmChild child = new MDIBasic.frmChild(this,"Редактор 1");

child.Show(); }

Тепер можна створити нові вікна з новим заголовком. Змініть код оброблювача пункту меню Створити нове вікно:

private void MenuItemNewWindow_Click(object sender, EventArgs e)

{ frmChild newChild = new

frmChild(this,"Редактор"+nextFormNumber++); newChild.Show(); }

Для послідовного (каскадного) розташування декількох вікон з документами є тільки одна можливість. Додайте оброблювачі пунктів меню Плитка й Каскад й уведіть у них наступний код:

private void MenuItemTile_Click(object sender, EventArgs e)

{ this.LayoutMdi(MdiLayout.TileHorizontal); }

private void MenuItemCascade_Click(object sender,EventArgs e)

{ this.LayoutMdi(MdiLayout.Cascade); }

Тепер потрібно закрити відкриті вікна. Додайте в меню Файл батьківської форми пункт Закрити. Форма frmContainer має властивість ActiveMdiChild, що дозволяє ідентифікувати те дочірнє вікно, що ми хочемо закрити. Клацніть два рази мишею на меню Закрити й додайте наступний код: private void MenuItemClose_Click(object sender, EventArgs e)

{frmChild frm =(frmChild)this.ActiveMdiChild;

if (frm != null) { frm.Close(); }}

Завдання.

1. Додайте в дочірнє вікно багатодокументного тестового редактора панель інструментів із трьома кнопками для зміни стилю шрифту Напівжирний, Курсив і Підкреслений. Оброблювачі події Click повинні бути ті самі для кнопок панелі інструментів і для пунктів контекстного меню.

2. Додайте в дочірнє вікно пункт основного меню Виправлення з наступними елементами: Скасувати, Повторити, Копіювати, Вирізати, Вставити. Задайте оброблювачі даних пунктів меню, що виконують відповідні дії. В RichTextBox є методи, що точно відповідають всім пунктам меню, тому можна просто використати функції Undo(), Redo(), Cut(), Copy() і Paste() елемента типу RichTextBox. Передбачте блокування пунктів меню, якщо їх неможливо виконати, наприклад, якщо в буфері немає тексту для вставки, пункт Вставити повинен бути заблокований.

this.menuItemCut.Enabled=rtfText.SelectedText.Length>0 ? true : false;

Контрольні питання.

1. Перелічіть різновиди додатків.

2. Як створити MDI-додаток?

3. Як прив'язати дочірню форму до MDI-контейнера?

4. Для чого призначений метод Show()?

5. Що таке frmChild?


Лабораторна робота № 5

Тема: Розробка Web-додатків ASP.NET з використанням Visual Studio .NET.

Мета: знайомство з принципами використання і можливостями середовища Visual Studio 2005 для розробки Web-додатків на основі ASP.NET.

1. Створення нового середовища

Для створення нового застосування ASP.NET слід виконати команду File New Web Site (Слід звернути увагу на те, що команда New Project не використовується, оскільки Web-додатки не є проектами). У вікні New Web Site, що відкрилося, можна вказати наступні відомості:

· шаблон (Templates) - визначає файли, з яких починатиметься Web -сайт. Підтримуються два типи базових застосувань ASP.NET - застосування Web -сайтів і застосування Web -служб. Шаблони цих застосувань були скомпоновані і відкомпілювалися аналогічно. Фактично можливе додавання Web -сторінок до застосування Web -служби, а також Web -служби до звичайного Web-додатку. Відмінність полягає у файлах, створюваних Visual Studio за замовчуванням. У Web-додатках робота починається із зразка Web-сторінки, в застосуванні Web-служби - із зразка Web -служби. Крім того, є складніші шаблони для певних типів сайтів.

· місцерозташування (Location) -