04 windows forms

19
Windows Forms

Upload: eleksdev

Post on 10-May-2015

1.129 views

Category:

Education


5 download

TRANSCRIPT

Page 1: 04 Windows forms

Windows Forms

Page 2: 04 Windows forms

Windows forms concept

- Все програмування побудоване на подіях та їх обробниках.

- Все є Control

Page 3: 04 Windows forms

ApplicationКлас який полегшує роботу з нашою windows forms application.

• OpenForms

• Run()• Exit()

• ThreadException• Idle

Page 4: 04 Windows forms

Visual Studio Form DesignerДизайнер візуал студії тільки генерує код.

Page 5: 04 Windows forms

Іменування

- LabelControl -> lbl<name>- ButtonControl -> btn<name>- TextBox -> txt<name>- …

Page 6: 04 Windows forms

Layout

Page 7: 04 Windows forms

UserControl – це користувацький контрол який служить контейнером для стандартних контролів.

Створювати власний UserControl потрібно:- Коли певна частина інтерфейсу буде

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

інтерфейс.

User controls

Page 8: 04 Windows forms

Form Lifecycle

http://www.c-sharpcorner.com/uploadfile/mamta_m/windows-forms-events-lifecycle/

1. Move2. Load3. VisibleChanged4. Activated5. Shown6. Paint7. Deactivate8. Closing9. Closed

Page 9: 04 Windows forms

Modal\non-Modal forms

Модальна форма – це форма яка буде показана поверх всіх вікон, користувач не може працювати з іншими формами поки дана форма відкрита.

var form = new Form1(); var result = form.ShowDialog();(синхронне показування форми)

Не-модальна форма – це форма яка є рівноправною по відношенні до інших форм програми. Програма може мати декілька відкритих форм.

var form = new Form2(); form.Show();(асинхронне показування форми)

Page 10: 04 Windows forms

Form.Close

За допомогою Close(); методу ви можете закрити форму.

1. Якщо ваша форма модальна – то після її закритят потрібно вручну викликати Dispose.

2. Якщо ваша форма НЕ модальна – то після її закритят Dispose буде викликаний у контексті Close (це зв’язане з асинхронним викликом) і звільняти ресурси не треба вручну.

Якщо вам потрібно показувати не модальну формук декілька раз то можете її ховани методом Hide()

Щоб управляти процесом закриття форми можна підписатися на обробку події Form.Closing.

Page 11: 04 Windows forms

Default buttons

Page 12: 04 Windows forms

Якщо будь яка кнопка має встановлений DialogResult то після її натиснення (якщо форма була показана як модальна) – форма контейнер закриється і ShowDialog() поверне встановлений DialogResult.

Якщо після натиснення кнопки ми вручну проставимо DialogResult то форма (якщо форма була показана як модальна) закриється і ShowDialog() поверне встановлений DialogResult.

private void btnOk_Click(object sender, EventArgs e) {

DialogResult = DialogResult.OK; }

Якщо ваше діалогове вікно буде закрите Х (у верхньому куті вікна), або викличеться метод Close(), та ви не встановлювали значення DialogResult вручну, то результатом закриття буде DialogResult.Cancel;

Dialogs & DialogResults

Page 13: 04 Windows forms

private void Form1_FormClosing(object sender, FormClosingEventArgs e) {

const string message = "Are you sure that you would like to close the form?"; const string caption = "Form Closing"; var result = MessageBox.Show(

message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (result == DialogResult.No) {

e.Cancel = true; }

}

MessageBoxes

Page 14: 04 Windows forms

WinForms + Threadings

Потік(thread) – це незалежний шлях виконання, може виконуватися одночасно з іншими потоками.

Звернаття до UI повинне здійснюватися тільки з того потоку в якому UI був створений.

Page 15: 04 Windows forms

WinForms + Threadings

Вирішення проблем багатопоточності:1. Якщо ви не маєте змоги вплинути на багатопоточний

функціонал.

public void DoInUIThread(Action action)

{ if (InvokeRequired)

{ Invoke(new MethodInvoker(action));

} else {

action(); }

}

Page 16: 04 Windows forms

WinForms + Threadings

Вирішення проблем багатопоточності:2. Якщо ви маєте змогу впливати на багатопоточний

функціонал – використовуйте BackgroundWorker.

3. Аналогічно можна використовувати Task\Task<T>.

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

Page 17: 04 Windows forms

Usability

Page 18: 04 Windows forms

Usability

1. Юзабіліті – це перш за все зручність використання вашої програми. Це те як ми складний функціонал робимо простим та інтуітивно зрозумілим для користувння.

2. Юзабіліті це одна з найважливіших складових програмного забезпечення.

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

Page 19: 04 Windows forms

UI Mookups

Мокап – це приблизний макет функціонального дизайну.

Переваги:- Ви можете більш точно оцінити інтерфейс.- Ви можете показати його знайомим\друзям\співробітникам для оцінки- Він не займає багато часу для розробки

Для проектування графічного інтерфейсу можна використовувати як спеціалізоване рпограмне забезпечення (Balsamiq Mookups) так і звичайний MsPaint чи навіть клаптик паперу.