ТОП 10:

ВИКОРИСТАННЯ ЗАСОБІВ ПРОГРАМУВАННЯ WINDOWS FORMS



 

Щоб створити GUI додаток в Microsoft .NET потрібно використовувати Windows Forms. Windows Forms – новий стиль побудови програми на базі класів .NET Framework class library. Вони мають власну модель програмування, яка більш досконаліше, ніж моделі, засновані на Win32 API або MFC, і вони виконуються в керованому середовищі .NET Common Language Runtime (CLR). Ця стаття дає уявлення про те, що таке Windows Forms, розглядаючи її від моделі програмування до Microsoft Intermediate Language і JIT-транслятора.

Програмісти бачать Microsoft .NET через лінзу .NET Framework class library. Уявіть MFC на порядок більше і ви отримаєте точну картину про ширині і глибині .NET Framework class library. Щоб полегшити суперечності в позначеннях і надати організацію багатьом сотням класів, .NET Framework class library розбита на ієрархічні розділи по іменах. Кореневої розділ, System, визначає фундаментальні типи даних, які використовуються усіма додатками .NET.

Програми, що використовують Windows Forms використовують класи System.WinForms. Цей розділ включає такі класи, як Form, який моделює поведінку вікон або форм; Menu, який представляє меню; Clipboard, який дає можливість додаткам Windows Forms використовувати буфер обміну. Він також містить численні класи, що надають кошти управління, наприклад: Button, TextBox, ListView, MonthCalendar і т.д. Ці класи можуть бути включені в додаток або з використанням тільки імені класу, або з використанням повного імені, наприклад: System.WinForms.Button.

В основі майже кожного додатка, написаного з застосуванням Windows Forms, – похідний клас від System.WinForms.Form. Зразок цього класу представляє головне вікно додатка. System.WinForms.Form має безліч властивостей і методів, які мають багатий програмний інтерфейс до форм. Хочете знати розміри клієнтської області форми? В Windows ви викликали б функцію API GetClientRect. В Windows Forms потрібно використовувати властивості ClientRectangle або ClientSize.

Програми, засновані на Windows Forms, які використовують кнопки, списки та інші типи компонентів Windows, використовують класи управління System.WinForms, значно спрощують програмування управління. Хочете створити стилізовану кнопку із зображенням у вигляді фону? Немає проблем. Увімкніть потрібне зображення в об'єкт System.Drawing.Bitmap і призначте його властивості кнопки BackgroundImage. Як щодо управління кольором? Ви коли-небудь пробували налаштовувати колір фону текстового поля? В Windows Forms це просто: потрібно просто привласнити колір властивості BackColor, все отстальних система зробить сама.

Інший важливий «будівельний» блок додаток, який використовує Windows Forms – клас System.WinForms по імені Application. Цей клас містить статичний метод Run, який завантажує додаток і відображає вікно.

Багато класів мають віртуальні методи, які можна перевизначити. Наприклад, System.WinForms.Form містить віртуальний метод OnPaint, який викликається коли клієнтська область форми потребує оновлення. OnPaint – один з багатьох віртуальних методів, який можна перевизначити в похідному класі для формування інтерактивних форм.

Інша важлива грань моделі програмування Windows Forms – механізм, який форми використовують для відповіді на введення в меню, засобів управління і інших елементів GUI додатка. Традиційні Windows-додатки обробляють повідомлення WM_COMMAND і WM_NOTIFY використовуючи події процесу Windows Forms. В C# і на інших мовах, які підтримують .NET Common Language Runtime (CLR), події – члени типу першого класу нарівні з методами, полями і властивостями. Фактично всі керуючі класи (control classes) Windows Forms (а також і багато некерованих класи) створюють події. Наприклад, кнопка (примірник System.WinForms.Button) після натискання створює подія Click. Форма, яка повинна відповісти на натискання кнопки може використовувати наступний код, щоб з'єднати кнопку на обробником події Click:

 

MyButton.Click + = new EventHandler (OnButtonClicked);

...

Private void OnButtonClicked (object sender, EventArgs e)

{

MessageBox.Show ("Click!");

}

EventHandler – спеціальний обробник подій, який виконує метод OnButtonClicked коли MyButton створюється подія Click. Перший параметр OnButtonClicked ідентифікує об'єкт, який викликала подія. Другий параметр в основному безглуздий для події Click, але використовується деякими інші типами подій, щоб передати додаткову інформацію.


 

РОЗРОБКА ПІДСИСТЕМИ СЕРІАЛІЗАЦІЇ/ДЕСЕРІАЛІЗАЦІЇ ДАНИХ

 

Розробка формату файлу

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

Таблиця 6.1 – Формат файлу

 

Поле Опис
public int age; Вік робітника
public string surname; Прізвище
public string name; Ім’я
public double pay; Зарплата
public bool timerStatus = false; Статус робітника (рухається чи ні)
public string activePlayer = "EmployerAct.jpg"; Зображення активного працівника
public string activePlayer = "Employerdis.jpg"; Зображення неактивного працівника
public static double border = 1600; Поріг заробітньої плати
public bool isSelected = false; Робітник вибраний
public Point finishPoint = new Point(); Точка руху
public int coordEmpX, coordEmpY; Поточні координати об’єкта
public bool stop = false; Змінна для зупинки автоматичного руху об’єкту

 

6.2 Механізми введення/виведення C#

 

Серіалізація (в програмуванні) – процес перетворення будь-якої структури даних в послідовність бітів. Зворотною до операції серіалізації є операція десеріалізації – відновлення початкового стану структури даних з бітової послідовності.

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

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

XML-серіалізація. При XML-серіалізації відкриті поля і властивості об'єкта або параметри і поверненні значення методів серіалізуются в XML-потік відповідно до особливого документу, складеного мовами XSD (мова визначення схеми XML). XML-серіалізація призводить до утворення строго типізованих класів з відкритими властивостями і полями, які перетворюються у формат XML. Простір імен System.Xml.Serialization містить класи, необхідні для серіалізації і десеріалізації XML.

Для управління способом, за допомогою якого XmlSerializer серіалізуются або десеріалізує екземпляр класу, можна застосовувати атрибути до класів і членам класу.

SOAP-серіалізація. XML-серіалізація може також використовуватися для серіалізації об'єктів в потоки XML, які відповідають специфікації SOAP. SOAP - це протокол, заснований на XML і створений спеціально для передачі викликів процедур з використанням XML .Як і в звичайній XML-серіалізації, атрибути можна використовувати для управління формою SOAP-повідомлень в літеральному стилі, що генеруються веб-службою XML [9].

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

1. Відмити клас як серіалізуємий за допомогою атрибута [Serializable]. Щоб запобігти серіалізацію членів ставимо атрибут [NonSerialized];

2. Створити новий екземпляр класу BinaryFormatter значеннями зі замовчуванням;

3. Задати файл для збереження;

4. Використовуючи файловий потік записати у файл серіалізований об’єкт

Десеріалізація – це зворотній процес до серіалізації.

Процес десеріалізації у C#

1. Зчитуємо інформацію з файлу в потік;

2. За допомогою екземпляра класу BinaryFormatterвідновлюємо об’єкти, їх змінні та їх поведінку.

Важливо. Зчитувати з файлу необхідно в такій же послідовності як і при запису у файл. При серіалізації, поля які мають атрибут [NonSerialized] не серіалізуются, їх потрібно окремо ініціалізувати.


 

КЕРІВНИЦТВО КОРИСТУВАЧА







Последнее изменение этой страницы: 2016-07-11; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.236.35.159 (0.006 с.)