Розробка та збирання компонентів типу Windows Forms
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Розробка та збирання компонентів типу Windows Forms

Мета роботи:

1. Створення Windows Forms з елементами керування

2. Обробка подій від клавіатури

3. Застосування компоненту NumericUpDown.

Теоретичні відомості

1. Шаблон створення компонентів для Windows Forms

2. Структура вікна Visual Studio при створенні Windows застосунків

2.1 Вікно проекту

Меню і панель інструментів

Properties Explorer – вікно властивостей об’єктів

3.4. Вікно компонентів: Toolbox

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

3. Типи форм (модальні і не модальні).

3.1. Типи форм

3.2. Властивості форми

3.3. Методи форми

3.4. Події форми

4. Розміщення на формі елементів керування (Controls)

4.1. Ієрархія класів Control

4.2. Заголовки (Label) і текстові поля (TextBox)

Компонент NumericUpDown - регулятор чисел

4.4. Контейнери елементів

5. Обробка подій в елементах форми

Шаблони створення компонентів для Windows Forms

Windows-застосунок в термінології .Net це рішення (Solition). Для компілятора це збірка (Assembly). Рішення може складатися з одного або кількох проектів. Кожний проект може складатися з кількох форм і інших файлів, рисунків, ресурсів, маніфесту (опису збірки).

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

Для створення Windows-застосунку в середовищі Visual Studio потрібно вибрати тип шаблону - Windows Application, вказати назву проекту та шлях у файловій системі, де буде зберігатися проект.

Класи для розробки Windows застосунків розміщені в просторі імен Windows.Forms.

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

 

using System.Windows.Forms;

 

Графічний інтерфейс користувача у Windows-застосунку – це сукупність форм, на яких розміщені елементи керування (Controls) та готові компоненти. Керування роботою програми виконується за допомогою меню, панелі інструментів та програмних кнопок.

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

При створенні проекту автоматично створюється порожня форма. Це стандартний шаблон нової програми Windows Forms.

На відміну від консольного застосунку, код Windows форми в C# розміщений у двох файлах, Form 1. cs і Form 1. designer . cs .

Це так звані неповні ( partial ) класи. Неповні класи можуть бути розміщені у декількох файлах. При компіляції виконується формування єдиного класу.

У файлі Form 1. designer . cs . знаходиться код,  який генерується дизайнером форми. Він містить конструктори форми і всіх елементів форми.

Наприклад,namespace MyPrg{ partial class Form1 { #region Windows Form Designer generated code private void InitializeComponent() {  this.components = new System.ComponentModel.Container();  this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;  this.Text = "Form1"; } #endregion }}

 

У файлі Form 1. cs міститься код ініціалізації класу і члени класу (поля, властивості, методи, обробники подій). Саме з цим класом працює програміст.

Крім цих двох файлів автоматично створюється статичний клас Program у файлі (Program.cs), який містить точку входу в програму.

 

using System;using System.Windows.Forms;namespace MyPrg{ static class Program { static void Main() { Application.Run(new Form1()); } }}

Метод Main є точкою входу для застосунку і викликає метод Application.Run, який створює клас Form1.

Клас Application – головний клас нашого застосунку. Він запускає цикл обробки повідомлень для нашого застосунку.

Це прихований (Sealed) клас, його наслідування неможливе. Для керуванням роботою ми можемо використовувати методи цього класу, у нашому прикладі це метод Run.

 

Примітка 1.

Якщо змінити назву форми з Form1 на іншу у вікні властивостей, то потрібно змінити цю назву і в методі Application.Run(new Form1());

Крім того, до складу кожного застосунку входить файл з інформацією про збірку (Assembly.info).

Таблиця 1. Найбільш важливі методи класу Application (всі вони є статичними)

Метод класу Призначення
AddMessageFilter( ) Ці методи дозволяють перехоплювати повідомлення RemoveMessageFilter( ) і виконувати з цими повідомленнями необхідні попередні дії. Для того щоб додати фільтр повідомлень, необхідно вказати клас, що реалізує інтерфейс IMessageFilter
DoEvents( ) Забезпечує здатність застосунку обробляти повідомлення з черги повідомлень під час виконання якої-небудь тривалої операції. Можна сказати, що DoEvents() - це "швидкий" замінник нормальної багатопоточності
Exit( ) Завершує роботу застосунку
ExitThred( ) Припиняє обробку повідомлень для поточного потоку і закриває всі вікна, власником яких є цей потік

Клас Application визначає багато статичних властивостей, більшість з яких доступні тільки для читання.

Таблиця 2. Основні властивості класу Application

Властивість Призначення
CommonAppDataRegistry Повертає параметр системного реєстру, який зберігає загальну для всіх користувачів інформацію про застосунок
CompanyName Повертає ім'я компанії
CurrentCulture Дозволяє задати або отримати інформацію про поточну мову, для роботи з якою призначений поточний потік
CurrentlnputLanguage Дозволяє задати або отримати інформацію про мову для введення інформації, одержуваної поточним потоком
ProductName Для отримання імені програмного продукту, яке асоційоване з даним застосунком
ProductVersion Дозволяє отримати номер версії програмного продукту
StartupPath Дозволяє визначити ім'я виконуваного файла для працюючого застосунку і шлях до нього в операційній системі

 

Вікно проекту

Вікно Solution Explorer – відображає дерево проекту і дозволяє управляти компонентами проекту. Наприклад, для того щоб додати в нього нову форму, просто виберіть в контекстному меню, що відкривається по клацанню правої кнопки миші, пункт Add/Add Windows Form.

Крім контекстного меню проекту існує ще ряд контекстних меню, що дозволяють управляти окремими елементами проекту. Так, щоб перемкнутися з вікна дизайнера у вікно коду проекту, виберіть в контекстному меню для Forml пункт View Code. Відповідно, щоб перемкнутися назад — View Designer. Контекстне меню є в кожного елемента дерева проекту. Використання контекстного меню — це швидкий інтерактивний спосіб навігації по проекту.

Приховування і відображення вікон – контекстне меню, команда Auto Hide.

Меню і панель інструментів

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

Вікно компонентівToolbox

Вікно відображає найбільш часто використовувані .NET компоненти для створення застосунків Windows. Toolbox має декілька закладок: Data, Components, Windows Forms, Clipboard Ring і General. Всі, окрім Clipboard Ring і General, містять компоненти, які можна перетягнути мишею на форму. Закладка Windows Forms включає візуальні елементи управління, такі як кнопки, списки, дерева. Закладка Data присвячена базам даних. Закладка Components містить невізуальні компоненти, найбільш представницьким серед яких є Timer.

Clipboard Ring відображає вміст буфера обміну за останні N операцій копіювання або вирізування. Для вставки вмісту, який був скопійований в буфер обміну декілька операцій назад, просто клацніть двічі лівою кнопкою миші по необхідному рядку.

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

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

З'явиться вікно властивостей проекту «Common Properties/ General» (табл. 3.3).

Таблиця 3. Основні властивості проекту

Властивість Призначення
Assembly Name Ім'я збірки
Output Тур e Тут можна вибрати Windows Application
Console Application або Class Library. За умовчанням для Windows Forms встановлюється тип Windows Application
Default Namespace Використовуване за умовчанням в проекті простір імен.
Startup Object Ім'я класу, що містить метод Main, який буде викликатися при запуску застосування.
Application Icon Шлях до файла з піктограмою для застосування
Project File Ім'я файла, що містить інформацію про проект.
Project Folder Шлях до папки, що містить файл проекту.
Output File Ім'я вихідного файла. Файл з таким ім'ям буде формуватися при побудові вашого застосування.

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

 

Таблиця 4. Основні властивості конфігурування збірки (рішення)

Властивість Призначення
Conditional Compilation Constants Визначені під час компіляції проекту константи. Вони допомагають розробнику управляти ходом компіляції проекту.
Optimize code Включення цієї властивості в true допомагає, в деяких випадках, збільшити продуктивність програми.
Check for Arithmetic Overflow/Underflow Дозволяє контролювати вихід результату за межі допустимих значень.
Allow unsafe code blocks Дозволяє використовувати в проекті ключове слово unsafe.
Warning Level Визначає рівень попереджень, що відображаються при компіляції програми.
Treat Warnings As Errors Дозволяє сприймати всі попередження як помилки.
Output Path Шлях, де буде сформований вихідний файл.
XML Documentation File Ім'я файла, в який буде записуватися документація з коментарів програми. Для формування документації необхідно використовувати меню Tools/Build Comment Web Pages.
Generate Debugging Information Генерувати інформацію відладки. Ця опція повинна бути включена при відладці застосування.

Краще залишити значення за замовчуванням.

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

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

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

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

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

Типи форм

У Windows є 2 типи форм: модальні (Modal) і не модальні. Модальність визначає поведінку фокусу вводу форми і тип інтерфейсу: однодокументний (SDI) чи багатодокументний (MDI).

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

Не модальна форма дозволяє переключатися на іншу форму. Вона реалізує MDI (multiple document interface). Ці форми можуть містити інші форми, які в цьому випадку називаються MDI child forms. MDI форма створюється після встановлення в true властивості IsMdiContainer.

Прикладом є вікно Word або Excel. Як правило, головна форма в застосунку є не модальною. Не модальні форми мають системне меню і кнопки згортки-відновлення. Вони можуть змінювати свій розмір. 

Кожна форма як екземпляр класу System.Windows.Forms має властивості, методи та події.

Властивості форми

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

Статичні властивості можна встановити двома способами:

1) написати відповідні конструктори з ініціалізацією в файлі Form 1. designer . cs ;

2) встановити значення властивостей у вікні властивостей (Properties) в середовищі Visual Studio.

Динамічні властивості можна задавати під час виконання як реакцію на події.

Основні властивості форми (класу Form) перелічені в табл. 3.5.

Таблиця 5. Основні властивості форми (класу Form )

Властивість Призначення Значення за замовчуванням
Name Назва форми в проекті. Form1, Form2..
AcceptButton Встановлюється значення кнопки, яка буде спрацьовувати при натисненні клавіші Enter. Для того щоб ця властивість була активною, необхідна наявність принаймні однієї кнопки, розташованої на формі None
BackColor Колір форми Control
BackgroundImage Фоновий рисунок None
CancelButton Встановлюється значення кнопки, яка буде спрацьовувати при натисненні клавіші Esc. None
ControlBox Встановлюється наявність або відсутність трьох стандартних кнопок у верхньому правому кутку форми: "Згорнути", "Розгорнути" і "Закрити"  
Cursor Визначається вид курсора при його положенні на формі Default
DrawGrid Встановлюється наявність або відсутність сітки з точок, яка допомагає форматувати елементи форми. True
Font Формат шрифта Microsoft Sans Serif; 8,25pt
FormBorderStyle Визначення виду границь форми. Sizable
Icon Зображення іконки, що розташовується в заголовку форми. Підтримуються формати .ico.
MaximizeBox Визначається активність стандартної кнопки "Розгорнути" у верхньому правому кутку форми.   True
MaximumSize Максимальний розмір ширини і висоти форми, що задається в пікселях. Форма буде приймати вказаний розмір при натисненні на стандартну кнопку "Розгорнути" 0;0 (У весь екран)
MinimizeBox Визначається активність стандартної кнопки "Згорнути" у верхньому правому кутку форми True
MinimumSize Мінімальний розмір ширини і висоти форми, що задається в пікселях. Форма буде приймати вказаний розмір при зміні її границь користувачем (якщо властивість FormBorderStyle має значення за умовчанням Sizable) 0;0
Size Ширина и висота форми 300; 300
StartPosition Визначення розташування форми при запуску застосування. WindowsDefaultLocation
Text Заголовок форми. Form1, Form 2
WindowState Визначення положення форми при запуску. Можливі значення: · Normal — форма запускається з розмірами, вказаними у властивості Size; · Minimized — форма запускається з мінімальними розмірами, вказаними у властивості MinimumSize; Maximized — форма розгортається на весь екран Normal

 

Методи форми

Методи забезпечують керування формою.

Таблиця 6. Основні методи класу Form

Ім’я методу Призначення
Form.ShowDialog() Забезпечує представлення форми як модального dialog box.
Form.Show() Показує форму як немодальний dialog box
Form.SetDesktopLocation() Використовується для позиціонування форми на поверхні desktop
Form.Activate() Активізує приховану форму
Form.Hide() Приховує форму
Form.Close(). Закриває форму

 

Події форми

Події форми пов’язані із створенням, знищенням, режимами роботи форми.

 

Таблиця 7. Основні події класу Form

Подія Призначення
Load Генерується один раз, безпосередньо після першого виклику методу Form.Show() або Form.ShowDialog(). Ця подія може використовуватися для первинної ініціалізації змінних і для підготовки форми до роботи (для кожної форми).
OnLoad Призначення максимальних і мінімальних розмірів форми
Activated Подія генерується при активізації форми. В обробнику події вставляють методи Form.Show(), Form.ShowDialog(), Form.Activate()
VisibleChanged Генерується при зміні властивості Visible форми коли вона стає видимою або невидимою. Події сприяють методи Form.Show(), Form.ShowDialog(), Form.Hide(), Form.Close().
Deactivated Виникає при втраті фокусу формою в результаті взаємодії з інтерфейсом користувача або в результаті виклику методів Form.Hide() або Form.Cloze() – але тільки для активної форми. Якщо закривати неактивну форму, подія не відбудеться.
Closing Виникає безпосередньо перед закриттям форми. У цей момент процес закриття форми може бути припинений і взагалі відмінений, чому сприяє розміщуваний в тілі обробника події наступний програмний код: e.Cancel = true; де e - подія типу CancelEventArgs.
Closed Вже після закриття форми. В обробнику цієї події розміщується будь-який код для “очищення” після закриття форми.

Ієрархія класів Control

Форма є контейнером, в якому розміщуються елементи керування (Controls) та компоненти.

Елементи керування — це компоненти, що забезпечують взаємодію між користувачем і програмою. Ці елементи розміщені в вікні Toolbox . Базовим класом є клас Control.

У вікні Toolbox елементи згруповані у групи за їх призначенням. Основні групи елементів:

Група командних об'єктів

Елементи Button, LinkLabel, ToolBar реагують на натискання кнопки миші і негайно запускають яку-небудь дію.

Група текстових об'єктів

Більшість застосунків надають можливість користувачу вводити текст і, у свою чергу, виводять різну інформацію у вигляді текстових записів. Елементи TextBox, RichTextBox приймають текст, а елементи Label, StatusBar виводять його. Для обробки введеного користувачем тексту, як правило, слід натискувати на один або декілька елементів з групи командних об'єктів.

Група перемикачів

До цієї групи входять об'єкти класів: ComboBox, ListBox, ListView, TreeView, NumericUpDown і інші.

Група контейнерів

Елементи-контейнери дозволяють групувати елементи. Як правило, елементи цієї групи розташовані на формі, служать підкладкою кнопкам, текстовим полям, спискам — тому вони і називаються контейнерами. Елементи Panel, GroupBox, TabControl, крім всього іншого, розділяють можливості застосунку на логічні групи, забезпечуючи зручність роботи.

Група графічних елементів

Для розміщення і відображення на формі графічних елементів (піктограм, зображень, заставок) використовуються елементи Image List, Picture Box.

PictureBox – об’єкт-контейнер для вставки зображень.

Діалогові вікна

Виконуючи різні операції з документом — відкриття, збереження, друк, попередній перегляд, — ми стикаємося з відповідними діалоговими вікнами. Класи OpenFileDialog, SaveFile Dialog, ColorDialog, PrintDialog містять вже готові операції для роботи з цими елементами.

Група меню

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

На рис. 3.1. зображено ієрархію класів Control.

 

Рис. 1. Ієрархія класів Control

Таблиця 8. Основні властивості класу TextBoxBase

Властивість Призначення
Name Назва поля (ідентифікатор)
Text Текст
AutoSize Визначає, чи буде елемент управління автоматично змінювати розмір при зміні шрифту на ньому
BackColor, ForeColor Дозволяють отримати або встановити значення кольору фону і переднього плану
HideSelection Дозволяє отримати або встановити значення, визначальне, чи буде текст в TextBox залишатися виділеним після того, як цей елемент управління буде виведений з фокусу
MaxLength Визначає максимальну кількість символів, яка можна буде ввести в TextBox
Modified Дозволяє отримати або встановити значення, що визначає, чи був текст в TextBox змінений користувачем
Multiline Указує, чи може TextBox містити декілька рядків тексту
Readonly Позначає TextBox як доступний тільки для читання"
SelectedText, SelectionLength Містять виділений текст (або певну кількість символів) в TextBox
SelectionStart Дозволяє отримати початок виділеного тексту в TextBox
Wordwrap Визначає, чи буде текст в TextBox автоматично переноситися на новий рядок досягши граничної довжини рядка

 

В TextBoxBase визначено методи для роботи з буфером обміну (Cut, Copy і Paste), відміною введення (Undo) і іншими можливостями редагування (Clear, AppendText і т. п.).

З усіх подій, визначених в TextBoxBase, найбільший інтерес представляє подія TextChange. Ця подія відбувається при зміні тексту в об'єкті класу, похідному від TextBoxBase. Обробник події можна використовувати для перевірки допустимості символів, що вводяться користувачем (наприклад, припустимо, що користувач повинен вводити в полі тільки цифри або, навпаки, тільки букви).

Приклад 1. Обробник події KeyPress для поля txtDisc, в яке можно вводити тільки літери

 

  private void txtDisc_KeyPress(object sender, KeyPressEventArgs e)

   {

       if (char.IsDigit(e.KeyChar))

       {

           e.Handled = true;

           MessageBox.Show("Поле не може містити цифри");

       }

}

 

Призначення текстовому полю обробника події виконується у вікні Propery (Events) для події KeyPress.

Приклад 2.

Якщо поле може містити тільки цифри, то обробник може бути таким:

 

private void txtPIN_KeyPress(object sender, KeyPressEventArgs e)

{

if (!char.IsDigit(e.KeyChar) )

{

          e.Handled = true;

          lbloutput.Text ="Поле PIN повинно бути числовим";

}

 

}

 

Примітка

Подія KeyPress блокує частину клавіатури.

 

Крім властивостей, визначених в TextBoxBase, кожний похідний клас має власні властивості. В табл. 3.9 перелічені основні властивості класу TextBox.

Таблиця 9. Основні властивості класу TextBox

Властивість Призначення
AcceptsReturn Дозволяє визначити, що буде, коли користувач при введенні тексту натисне на Enter. Варіанту два: або в TextBox починається новий рядок тексту, або активізується кнопка за замовчанням на формі
CharacterCasing Дозволяє вибрати символ, який використовується для відображення даних, що вводяться користувачем (в полі для введення пароля)
ScrollBars Дозволяє отримати або встановити значення, яке визначає, чи будуть в TextBox з декількома рядками смуги прокрутки
TextAlign Дозволяє визначити вирівнювання тексту в TextBox  

Приклад

int Value = (int)numericUpDownl.Value;

 

Контейнери елементів

Ціла група елементів-контейнерів в C# призначена для групування елементів. Основні контейнери:

GroupBox – логічне об’єднання елементів (прапорців, перемикачів).

Panel – Підтримує смуги прокрутки. Елементи Panel використовуються для економії простору на формі. Наприклад, якщо елементи, які плануємо розмістити на формі, на ній не уміщаються, то можна помістити їх всередину Panel і встановити для властивості AutoScrol1 об'єкту Panel значення true. В результаті користувач отримає можливість доступу до елементів управління, що не вміщаються, за допомогою смуг прокрутки.

Висновки

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

Контрольні питання і завдання до теми

1. З яких файлів складається клас Form? Чому цей клас розділений на два файли?

2. В якому файлі знаходиться точка входу в збірку?

3. Чим модальна форма відрізняється від немодальної?

4. Що таке неповний клас?

5. Який метод і якого класу запускає програму на виконання? Як називається головний клас збірки?

6. У якому вікні VS розташовані елементи керування і стандартні компоненти?

7. За допомогою якого вікна можна налаштувати властивості форми і її елементів?

8. Як встановити на формі властивості для програмних кнопок, які будуть спрацьовувати при натисненні клавіш Enter i Esc? Які властивості при цьому слід встановити?

9. Яка різниця в елементах керування Label і TextBox?

10. Який елемент є базовим в ієрархії елементів керування?

11. Чим NumericUpDown відрізніяється від ComboBox?

Зверніть увагу:

1. Імена класів повинні бути змістовними (змініть, наприклад, ім'я «Form1» на назву задачі Вашого варіанту - «Calendar», «Bank», «Elecro» й т.д.).

Для цього у вікні коду проекту виділить ім'я змінної об'єкту, потім в головному меню виберіть пункт Refactor (Оптимізація) і підпункт Rename (Перенайменувати). У вікні, що відкрилося, вкажіть нове ім'я. Тоді будуть показані всі місця, що вимагають перейменування об'єкту, натисніть кнопку Apply (Застосувати/Применить).

2. ім'я класу і ім'я файлу, що зберігає клас, повинні збігатися. Перейменування імені файлу робиться безпосередньо у вікні проектів Solution Explorer. Достатньо перейменувати Form1.cs на Mile.cs (наприклад). Для цього виділіть ім'я файлу і з контекстного меню (права кнопка миші) виберіть команду Rename.

3. Кожний блок програми повинен мати коментар

Для цього в рядку перед заголовком класу слід набрати три слеша. В результаті перед заголовком класу з'явиться заголовний коментар – тег «summary», в який слід додати короткий, але змістовний опис призначення класу.

Теги «summary», якими слід супроводжувати класи, відкриті (public) методи і поля класу відіграють три важливі ролі. Вони полегшують розробку і супровід проекту, роблячи його самодокументованим. Клієнти класу при створенні об'єктів класу отримують інтелектуальну підказку, що пояснює суть того, що можна робити з об'єктами. Спеціальний інструментарій дозволяє побудувати документацію за проектом, що включає інформацію з тегів «summary».

4. Всі задачі треба розмістити в одному рішенні.

 

№ варіанту Зміст завдання
1 1. Написати програму розрахунку вартості доставки посилки. Вхідні дані вартість 1кг вантажу та 1 км доставки. Доставка розраховується в залежності від відстані. 2. Реалізувати Windows-проект для обчислення кубу частки двох десяткових чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
2 1. Написати програму розрахунку прибутку по банківському вкладу. Вхідні дані для розрахунку – сума і термін вкладу (1, 3, 6 чи 12 місяців). Процентна ставка визначається терміном вкладу. Якщо термін вкладу перевищує 12 місяців нараховуються додаткові 2%. 2. Реалізувати Windows-проект для обчислення добутку та частки двох десяткових чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
3 1. Розробити форму для перекладу одиниць площі з метричних в англо-американські одиниці виміру, якщо відомо, що 1м2 = 10,76 кв.футов, 1 см2 = 0,1550 кв. дюймів. 2. Реалізувати Windows-проект для обчислення кубу суми двох десяткових чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
4   1. Написати програму розрахунку вартості оренди квартири. Вхідні дані – час оренди і тип квартири (кількість кімнат та стан (задовільний, добрий, євроремонт). 2. Реалізувати Windows-проект для обчислення квадрат суми двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
5 1. Розробити форму для розрахунку ціни замовлення комплексного обіду. Якщо відома ціна першої страви. Ціна другої страви – в двічі вища за ціну першої, салату – в тричі менша за ціну другої, ціна напою й хліба – вводиться з клавіатури. 2. Реалізувати Windows-проект для обчислення різниці квадратів двох позитивних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
6 1. Написати програму розрахунку вартості оренди автомобіля. Вхідні дані – час оренди і тип автомобіля. Якщо об’єм двигуна більший за 3,5л, надається 15% знижка. 2. Реалізувати Windows-проект для обчислення суми квадратів двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
7 1. Написати програму розрахунку вартості доставки меблів. Вхідні дані – номер поверху, інформація про наявність ліфту (грузовий, звичайний), вартість 1 години доставки. 2. Реалізувати Windows-проект для обчислення квадрату різниці двох цілих чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
8 1. Написати програму розрахунку вартості замовлення пива. Вхідні дані для розрахунку – сорт пива (світле, темне), кількість порцій. Якщо кількість замовлень більше 20, надається знижка 15%. 2. Реалізувати Windows-проект для обчислення кубу різниці десяткових чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
9 1. Написати програму розрахунку вартості замовлення друку фотографій. Вхідні дані для розрахунку – розмір (9х12,12х15,18Х24) і кількість фотографій. Якщо кількість фотографій більше 20, то надається знижка 10%.. 2. Реалізувати Windows-проект для обчислення квадрату добутку двох десяткових чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
10 1. Написати програму розрахунку вартості сканування книги та її розміщення в електронній бібліотеці ДонНТУ. Вхідні дані – кількість сторінок, час сканування 1 сторінки, час формування електронного варіанту у форматі DjVu, вартість 1 години виконавця. 2. Реалізувати Windows-проект для обчислення кубу частки двох десяткових чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
11 1. Розробити форму для перекладу одиниць площі з англо-американських одиниць виміру в метричні, якщо відомо, що 1кв.фут = 0,00929 кв.м, 1кв.дюйм = 6,4516 кв.см. 2. Реалізувати Windows-проект для обчислення суму кубів двох десяткових чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
12 1. Написати програму розрахунку вартості заправки газового балону. Вхідні дані – об’єм балону, вартість 1літру газу. 2. Реалізувати Windows-проект для обчислення різницю кубів двох десяткових чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
13 1.Написати програму розрахунку прибутку по банківському вкладу. Вхідні дані для розрахунку – сума і термін вкладу (1, 3, 6 чи 12 місяців). Процентна ставка визначається терміном вкладу. 2. Реалізувати Windows-проект для обчислення квадрату частки двох десяткових чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
14 1. Написати програму розрахунку вартості бензину на заправці. Вхідні дані – кількість літрів, марка бензину (92,95,98) з урахуванням наявністі знижки ( 10% дисконтної картки). 2. Реалізувати Windows-проект для обчислення квадрату суми двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
15 1. Написати програму Конвертор для перерахунку валют з доларів, євро, та рублів в гривні. 2. Реалізувати Windows-проект для обчислення додатку та частки двох десяткових чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
16 1. Розробити форму для розрахунку ціни жалюзі за заданими розмірами, якщо відомо, вартість 1м2 жалюзі, і вартість 1м кріплення. 2. Реалізувати Windows-проект для обчислення кубу суми двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
17 1. Розробити форму для розрахунку ціни металопластикового вікна (склопакета), якщо відомі розміри вікна та вартість 1м2 склопакета залежно від виду (одно-, двох- або трьох-камерні). 2. Реалізувати Windows-проект для обчислення квадрату суми двох десяткових чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
18 1. Розробити форму для розрахунку ціни базового пакету послуг оператора мобільного зв'язку. Вхідні дані - вартість 100 одиниць SMS, 50 одиниць MMS та 1500хвилин розмови 2. Реалізувати Windows-проект для обчислення кубу частки двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
19 1. Написати програму розрахунку вартості друкування книги в типографії. Вхідні дані – кількість сторінок книги, кількість екземплярів та умови виконання замовлення (терміново чи ні). 2. Реалізувати Windows-проект для обчислення різниці квадратів двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
20 1. Написати програму розрахунку вартості піци разом з доставкою. Вхідні дані сорт піци і його ціна, вартість доставки розраховується в залежності від відстані. 2. Реалізувати Windows-проект для обчислення суми квадратів двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
21 1. Розробити форму для розрахунку ціни вхідної двері за заданими розмірами, якщо відомо, вартість 1м2 полотна, а вартість замка становить 1/5 частину від вартості двері. 2. Реалізувати Windows-проект для обчислення квадрат рідниці двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
22 1. Розробити форму для розрахунку ціни металопластикового вікна (склопакета). Вхідні дані - довжина вікна, ширина вікна (см), і вартість 1см2 склопакета 2. Реалізувати Windows-проект для обчислення кубу різниці двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
23 1. Розробити форму для перекладу одиниць площі з англо-американських одиниць виміру в метричні, якщо відомо, що 1кв.фут = 0,00929 кв.м, 1кв.дюйм = 6,4516 кв.см., 1кв.фут = 144кв.дюйма. 2. Реалізувати Windows-проект для обчислення суми кубів двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
24 1. Розробити форму для обчислення доходу по вкладу за такими формулами: Д = С * (СР1 * (СТ/100), де С-сума вкладу, СР1-термін вкладу (дні СР1 = СРдн/360 або місяці СР1 = СРм/12), СТ-річна процентна ставка. Вхідні дані - сума вкладу, Строк вкладу, Річна ставка. 2. Реалізувати Windows-проект для обчислення різниці кубів двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.
25 1. Розробити форму для розрахунку ціни замовлення комплексного обіду. Вхідні дані - ціна першої, другої страви, салату і напою. 2. Реалізувати Windows-проект для обчислення різниці та суми двох негативних чисел. Вхідні числа вибираються в елементі NumericUpDown. Результат вивести в текстове поле. 3. Написати програму обчислення поточного дня з вашого дня народження. Дату народження вибрати за допомогою компонента MonthCalendar. Результат вивести в текстове поле.

Література

1.. Культин Н.Б. Microsoft Visual C#  в задачах и примерах. – СПб.: БХВ-Петербург, 2009. -320 с.

2. Кросплатформне програмування: методичні вказівки до самостійної роботи та виконання лабораторних робіт.// Укладач Коротун Т.М. - К. : МНТУ. – 2011

3. Уотсон К., Нейгел К, и др. "Visual C# 2008. Базовый курс", Wiley Publishing, 2009. - 1211с

 

Теоретичні відомості:

1. Клас ButtonBase і його основні властивості

2. Елемент кнопка. Клас Button

3. Елемент прапорець - клас CheckBox

4. Елемент перемикач – клас RadioButton

5. Активація і деактивація елементів

6. Приховування елементів

7. Динамічне створення елементів

 

Таблиця 1. Властивості класу ButtonBase

Властивість Призначення
FlatStyle Дозволяє налаштувати "рельєфність" кнопки. Використовуються значення з переліку можливих значень властивості FlatStyle
Image Дозволяє задати зображення, яке буде виводитися на кнопці (при цьому можна вказати точне місцезнаходження зображення). Фоновий рисунок краще налаштовувати за допомогою властивості BackgroundImage, яка визначена в базовому класі Control
ImageAlign Дозволяє визначити вирівнювання зображення, розміщеного на кнопці. Використовуються значення з переліку можливих значень властивості ContentAlignment
Imagelndex, ImageList Ці властивості використовуються для роботи з набором зображень (об'єктом ImageList), що виводяться на кнопці
IsDefault Визначає, чи буде ця кнопка кнопкою за замовчанням (тобто спрацьовувати при натисненні на Enter)
TextAlign Дозволяє отримати або встановити вирівнювання тексту на кнопці.

 

Елемент Кнопка. Клас Button

Кнопка (button) - це найпростіший і найбільш застосовний з усіх елементів керування. Дозволяє організувати керування формою. Основні властивості класу наслідуються від ButtonBase і Control.

Найбільш використовувана подія кнопки - Click , яка виникає при натисненні на кнопку лівою кнопкою миші. Наприклад, для того, щоб закрити форму при натисненні на кнопку Завершити, в обробнику кнопки викликаємо метод Close()?

private void btmClose_Click(object sender, EventArgs e)

   {

     Close();

   }

Якщо рішення містить декілька форм, то для завершення роботи в обробнику кнопки викликаємо метод Application.Exit().

 

private void btmClose_Click(object sender, EventArgs e)

      {

       Application.Exit();

   }

Таблиця 2. Основні властивості класу CheckBox

Властивість Призначення
Appearance Налаштовує вигляд прапорця. Для цієї властивості використовуються значення з переліку можливих значень Appearance
AutoCheck Дозволяє отримати або встановити значення, яке визначає, чи будуть значення Checked і CheckState, а також зовнішній вигляд прапорця автоматично змінюватися при клацанні на ньому
CheckAlign Дозволяє встановити горизонтальне і вертикальне вирівнювання прапорця (квадратика) в елементі CheckBox. Використовуються значення з переліку ContentAlignment
Checked Повертає значення типу bool, що представляє поточний стан прапорця (вибраний або не вибраний) Якщо для властивості ThreeState встановлено значення true, то властивість Checked буде повертати true як для явно вибраного прапорця, так і для того прапорця, для якого встановлено значення не “визначено” (indeterminate)
CheckState Дозволяє отримати або встановити значення прапорця (встановлений - не встановлений - не визначено), використовуючи не true і false, як в Checked, а три значення з переліку CheckState. Звичайно використовується, якщо властивість ThreeState для прапорця має значення true (тобто він допускає три значення).
ThreeState Визначає, чи будуть для прапорця використовуватися три значення (з переліку CheckState) або тільки два
Enabled Повертає або задає значення, що визначає, чи активний елемент. Можливі значення: активний – true, інакше -false

 

Можливі стани прапорця (Indeterminate можна використовувати тільки тоді, коли для властивості ThreeState встановлено значення true) наведено в таблиці 3.

 

Таблиця 3. Можливі стани прапорця

Checked Прапорець встановлений
Indeterminate Значення не визначено (звичайно прапорець виглядає як "сірий", затіняє)
Unchecked Прапорець знятий

 

Таблиця 4. Основні властивості класу RadioButton

Властивість Призначення
Text Дозволяє отримати або встановити текст, який розміщений на перемикачі
AutoCheck Дозволяє отримати або встановити значення, яке визначає, чи будуть значення Checked і CheckState, а також зовнішній вигляд перемикача автоматично змінюватися при клацанні на ньому
TextAlign Дозволяє встановити горизонтальне і вертикальне вирівнювання тексту на перемикачі
Checked Повертає значення типу bool, що представляє поточний стан перемикаяа (вибраний або не вибраний). Якщо перемикач включений, значення Checked = true, інакше -  false.
CheckState Дозволяє отримати або встановити значення прапорця (встановлений - не встановлений - не визначено), використовуючи не true і false, як в Checked, а три значення з переліку CheckState. Звичайно використовується, якщо властивість ThreeState для прапорця має значення true (тобто він допускає три значення).
Enabled Повертає або задає значення, що визначає, чи активний елемент. Можливі значення: активний – true, інакше -false.

 

 

Приклад 1.

private void ClickMyRadioButton()

{

if (radioButton2.Checked)

{

radioButton1.PerformClick();

}

}

 

При виборі перемикача генерується подія CheckedChanged:

private void radioButton1_CheckedChanged(object sender, EventArgs e)

   {

      

    }

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

І прапорець (CheckBox), і перемикач (RadioButton) підтримують властивість Checked, за допомогою якої зручно одержувати інформацію про стан відповідно прапорця і перемикача. Проте якщо є необхідність задіювати додатковий третій стан прапорця (не визначено - Indeterminate), то доведеться замість Checked використовувати властивість CheckState і значення з однойменного переліку CheckState.

Властивість Checked частіше за все використовується в коді.

Приховування елементів

Властивість елемента Visible дозволяє приховати чи зробити видимим елемент на формі. Значення Visible=true робить елемент видимим, Visible=false приховує елемент.

 

Приклад 2.

Приклад 3.

Створення елементу CheckBox

public void InstantiateMyCheckBox()

   {

       // Create and initialize a CheckBox.  

       CheckBox checkBox1 = new CheckBox();

 

       // Make the check box control appear as a toggle button.

       checkBox1.Appearance = Appearance.Button;

 

       // Turn off the update of the display on the click of the control.

       checkBox1.AutoCheck = false;

 

       // Add the check box control to the form.

       Controls.Add(checkBox1);

       checkBox1.Text = "Прапорець";

}

 

 

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

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

2. Яке призначення властивості CheckState?

3. Яке призначення властивості Checked?

4. Яке призначення властивості Enabled?

5. Яке призначення властивості Visible і чим вона відрізняється від Enabled?

6. Що означає оператор new у виразі:

CheckBox checkBox1 = new CheckBox();

7. Що означають наступні команди?

      Controls.Add(checkBox1);

       checkBox1.Text = "Прапорець";

8. Що означають наступні команди?

   private GroupBox groupBox1;

   private RadioButton radioButton2;

   private RadioButton radioButton1;

9. Чи можна прапорець, який створений в режимі дизайна форми і видимий при її завантаженні, приховати. Якщо так, то як це можна зробити?

10. Яку властивість прапорця краще використовувати для зміни стану: Visible чи  Enabled?

Set as StartUp Project

 

Після цього його можна запустити на виконання.

 

Set as StartUp Project

 

Після цього його можна запустити на виконання.

 

Теоретичні відомості

Многофайловая сборка - это коллекция взаимосвязанных модулей, которые развертываются в виде цельной логической единицы. В IDE-среде Visual Studio шаблона проекта для создания многофайловой сборки на С# не предусмотрено. Поэтому используется компилятор командной строки (csc.exe).

 

Задача: создать многофайловую сборку по имени Car. В главном модуле этой сборки (car.dll) должен содержаться единственный тип класса SportCar и соответствующий манифест, который указывает на наличие дополнительного файла *.netmodule по имени auto.netmodule, содержащего еще один класс Auto. Каждый класс должен размещаться в отдельном двоичном файле, а пространство имен у них будет одно — Car. Оба класса создать на С#

 

Порядок создания многофайловой сборки приведен ниже.

 

1. С помощью любого простого текстового редактора создадим определение для класса Auto и сохраним его в файле с именем auto.cs:

using System;

 

namespace Car

{

 public class Auto

{

   public void AutoInfo()

   {

       Console.WriteLine("Информация об автомобиле: ");

   }

}

}

 

2. Скомпилируем этот класс в .NET-модуль. Для этого откройте в Visual Studio 2010 окно командной строки, перейдите в папку, где был сохранен файл auto.cs, и введите следующую команду (опция module флага /t указывает, что должен быть создан файл *.netmodule, а не *.dll или *.ехе):

 

csc.exe /t:module auto.cs

 

В папке с файлом auto.cs появится новый файл по имени auto.netmodule.

 

3. Создадим новый файл sportcar.cs со следующим определением класса:

 

using System;

 

namespace Car

{

public class SportCar

{

   public void InfoSportCar()

   {

       Console.WriteLine("Audi R8");

   }

}

}

 

4.  Скомпилируем sportcar.cs так, чтобы главный модуль в этой многофайловой сборке назывался car.dll. Кроме того, он должен включать информацию о двоичном файле auto.netmodule.

Выбираем соответствующие опции /t: library и /out:.

Чтобы включить информацию о двоичном файле auto.netmodule в манифест сборки, также потребуется добавить соответствующий флаг /addmodule. Полностью необходимая команда выглядит следующим образом:

 

csc /t:library /addmodule:auto.netmodule /out:car.dll sportcar.cs

 

После выполнения этой команды в каталоге должен появиться главный модуль car.dll, а также второстепенный двоичный файл auto.netmodule.

 

5. Анализ манифеста.

5.1. Откроем файл auto.netmodule в утилите c:\program Files\Microsoft SDKs\Windows\v6.0A\bin\ildasm.exe (возможно, путь на вашем ПК будет иной). Сразу же можно будет заметить, что в нем содержится манифест уровня модуля, единственной задачей которого является перечисление всех внешних сборок, которые упоминаются в кодовой базе. Поскольку в классе Auto был практически добавлен только вызов Console.WriteLine(), обнаружится следующая ключевая информация:

5.2. Далее откроем в ildasm.exe файл главного модуля car.dll и изучим содержимое манифеста уровня всей сборки. В нем важно обратить внимание, что маркер .file используется для представления информации о других ассоциируемых с многофайловой сборкой модулях (в данном случае — auto.netmodule), а маркеры .class extern — для перечисления имен внешних типов, которые упоминаются как используемые во второстепенном модуле (в данном случае — Auto). Ниже приведена соответствующая информация:

Розробка та збирання компонентів типу Windows Forms

Мета роботи:

1. Створення Windows Forms з елементами керування

2. Обробка подій від клавіатури

3. Застосування компоненту NumericUpDown.

Дата: 2019-02-25, просмотров: 331.