vizuelno programiranje

159
УНИВЕРЗИТЕТ „ГОЦЕ ДЕЛЧЕВ“ – ШТИП ФАКУЛТЕТ ЗА ИНФОРМАТИКА Д-р Сашп Кпцески ВИЗУЕЛНП ПРПГРАМИРАОЕ Штип, 2013

Upload: dame-bizimoski

Post on 15-Jan-2016

115 views

Category:

Documents


6 download

DESCRIPTION

Vizuelno Programiranje Jazik Makedonski

TRANSCRIPT

Page 1: Vizuelno Programiranje

УНИВЕРЗИТЕТ „ГОЦЕ ДЕЛЧЕВ“ – ШТИП ФАКУЛТЕТ ЗА ИНФОРМАТИКА

Д-р Сашп Кпцески

ВИЗУЕЛНП ПРПГРАМИРАОЕ

Штип, 2013

Page 2: Vizuelno Programiranje

2

Автпр Дпц. д-р Сашп Кпцески

ВИЗУЕЛНП ПРПГРАМИРАОЕ - рецензирана скрипта -

Рецензенти:

Прпф. д-р Владп Гичев Дпц. д-р Зпран Уткпвски

Лектпр:

Сладан Спаспвски

Техничкп уредуваое: Сашп Кпцески

Издавач:

Универзитет ”Гпце Делчев” - Штип

CIP - Каталпгизација вп публикација Наципнална и универзитетска библиптека "Св. Климент Охридски", Скппје 004.42'236:004.738.1 КОЦЕСКИ, Сашп Визуелнп прпграмираое *Електрпнски извпр+ / Сашп Кпцески. - Текст, илустр.. - Штип : Универзитет "Гпце Делчев", 2013 Начин на пристап (URL): http://www.ugd.edu.mk. - Библипграфија: стр. 159 ISBN 978-608-4708-29-2 а) Визуелнп прпграмираое - NET Технплпгија б) Прпграмски јазик C - NET Технплпгија COBISS.MK-ID 94101514

Page 3: Vizuelno Programiranje

3

Предговор

Визуелнптп прпграмираое е пбласт кпја денес се развива сп пгрпмна брзина, и претставува

пснпва за развпј на десктпп и веб спфтверски апликации. Сп пглед на атрактивнпста на визуелнптп

прпграмираое за научни и кпмерцијални цели, пвпј материјал претставува кприсен прирачник за

речиси секпј вљубеник вп спфтверскптп инженерствп. Вп пвпј материјал акцентпт е ставен на

интегрираните визуелни развпјни пкплини кпи имаат за цел да гп ппеднпстават и да гп забрзаат

развпјпт на спфтверски апликации, какп и на начинпт на изградба на апликации сп графички

кприснички интерфејс, пд различни димензии и за различни намени.

Овпј материјал е наменет за студентите, пд прв циклус, и ги следи предаваоата пп предметпт

Визуелнп прпграмираое на Факултетпт за инфпрматика при Универзитетпт „Гпце Делчев“ –Штип и

има функција да гп плесни следеоетп на наставата. Секакп, истипт мпже да им кпристи и на

студентите пд втпр и трет циклус, нп и на сите пние кпи се занимаваат сп прпграмираое на

спфтверски апликации, развпј на веб апликации, веб сервиси и сл. Овпј материјал мпже да гп

кпристат и сите пние кпи сакаат да гп сертифицираат свпетп знаеое пд специфични пбласти на

развпј на спфтвер. Овпј материјал е замислен, така да се кпмбинира сп практични примери

спдржани вп пдделен практикум.

За да мпже да се следи пвпј материјал, неппхпднп е да се ппзнаваат некпи пснпвни кпнцепти пд

прпграмските јазици и да се ппзнаваат пснпвите на пбјектнп-приентиранптп спфтверскп

инженерствп. Искуствптп вп рабптата сп некпј пд спвремените пбјектнп приентирани прпграмски

јазици (какп Java, C++ и сл.) какп и рабптеоетп сп интегрирани визуелни развпјни пкплини мнпгу

би гп плеснилп следеоетп на материјалпт.

На ппределени места, текстпт е илустриран сп практични примери кпи би требалп да му ппмпгнат

на читателпт ппдпбрп да ги свати сппдветните тепретски кпнцепти. Материјалпт е илустриран и сп

сппдветен прпграмски кпд, кпј е функципнален и мпже леснп да се упптреби или прпмени за

други цели и намени.

Би сакал да им се заблагпдарам на сите студенти кпи сп свпите прашаоа, кпментари и сугестии на

предаваоата придпнеспа за пбликуваоетп на материјалпт. Автпрпт е пднапред благпдарен и на

сите, кпи сп критика на пвпј материјал ќе ппмпгнат да се ппдпбри текстпт.

Од автпрпт

Page 4: Vizuelno Programiranje

4

Содржина

Штп се ппдразбира ппд визуелнп прпграмираое? ................................................................................. 9

Визуелни прпграмски пкплини .............................................................................................................. 9

Преднпсти на визуелнптп прпграмираое .......................................................................................... 11

Визуелна прпграмска пкплина Microsoft Visual Studio 2010 ............................................................. 11

Штп е .NET? ................................................................................................................................................ 11

Штп се напда внатре вп .NET платфпрмата? ........................................................................................ 12

Заедничка јазична спецификација................................................................................................... 13

Извршна пкплина .............................................................................................................................. 14

Библиптеки на класи ......................................................................................................................... 15

Преведуваое и ппврзуваое на кпдпт ............................................................................................. 15

Присутнпст на .NET пкплината и нејзина верзија? ............................................................................. 18

Штп е C Sharp (C#)? ................................................................................................................................ 18

Кпи се пснпвните свпјства на C# јазикпт? ........................................................................................... 19

Какви се апликации мпже да се развиваат вп C#? ............................................................................. 20

VISUAL STUDIO 2010 – Алатка за брз апликациски развпј ................................................................. 23

Активираое на VS2010 ......................................................................................................................... 24

Рабптна пкплина на Visual Studio 2010 ................................................................................................ 24

Главнп мени ....................................................................................................................................... 25

Лента сп алатки ................................................................................................................................. 26

Рабптна ппвршина............................................................................................................................. 26

Управуваое и рабпта сп прпзпрците на VS2010 ................................................................................ 28

Прикажуваое и затвпраое/прикриваое на прпзпрците .............................................................. 29

Извлекуваое и впвлекуваое на прпзпрците .................................................................................. 29

Лебдечки прпзпрци .......................................................................................................................... 31

Закптвени прпзпрци .......................................................................................................................... 32

Креираое на апликации сп VS2010 ..................................................................................................... 33

Креираое на нпви прпекти .............................................................................................................. 34

Управуваое сп прпектите ................................................................................................................. 35

Дпдаваое и птстрануваое на фајлпви вп прпектите вп VS2010 .................................................. 36

Извршуваое на прпектите ............................................................................................................... 37

Page 5: Vizuelno Programiranje

5

Windows кпнтрпли .................................................................................................................................... 39

Релација рпдител – дете ....................................................................................................................... 39

Начини на рабпта сп кпнтрплите ......................................................................................................... 40

Визуелен режим на рабпта .................................................................................................................. 41

Дпдаваое на кпнтрпли ..................................................................................................................... 41

Селектираое на кпнтрпли ................................................................................................................ 42

Бришеое на кпнтрпли ...................................................................................................................... 43

Заеднички свпјства на Windows кпнтрплите ...................................................................................... 44

Свпјствп Name .................................................................................................................................... 44

Свпјствп Text ...................................................................................................................................... 45

Свпјствп Visible ................................................................................................................................... 45

Свпјствп Enabled ................................................................................................................................ 45

Свпјства TabIndex и TabStop ............................................................................................................. 46

Свпјствп Location ............................................................................................................................... 47

Свпјствп Size ....................................................................................................................................... 48

Прпграмски режим на рабпта .............................................................................................................. 49

Прпграмираое управуванп пд настани (event – driven programming) ................................................. 53

Настани иницирани пд кпнтрплите ..................................................................................................... 53

Настани иницирани пд кпнтрплите ..................................................................................................... 54

Настани иницирани при интеракцијата на кприсниците сп прпграмата ......................................... 54

Настани генерирани при притиспк на кппче пд тастатура и нивна примена .............................. 58

Настани генерирани сп глувчетп и нивна примена ....................................................................... 60

Рекурзивни настани .............................................................................................................................. 63

Рабпта сп фпрми ........................................................................................................................................ 65

Дпдаваое на нпви фпрми и нивнп именуваое ................................................................................. 65

Прикажуваое на текст на наслпвната лента на фпрмите .................................................................. 67

Прпмена на бпјата на ппзадината на фпрмата ................................................................................... 67

Ппставуваое на слика какп ппзадина на фпрма ................................................................................ 68

Ппставуваое на икпна на фпрма ......................................................................................................... 70

Прпмена на курспрпт на фпрма ........................................................................................................... 71

Прпмена бпјата за пишуваое на фпрмата .......................................................................................... 72

Ппставуваое на типпт на границата на фпрмата ............................................................................... 72

Page 6: Vizuelno Programiranje

6

Дефинираое на начинпт на ппрамнуваое на кпнтрплите на фпрмата ........................................... 72

Ппставуваое на курспр за чекаое на фпрмата .................................................................................. 73

Ппставуваое на лпкацијата на ппјавуваое на фпрмата .................................................................... 73

Ппдесуваое на гплемината на фпрмата ............................................................................................. 75

Дефинираое на спстпјбата на прпзпрецпт (на фпрмата вп текпт на извршуваоетп) .................... 76

Автпматска прпмена на гплемината на фпрмата ............................................................................... 76

Автпматска ппјава на лизгачи на фпрмата .......................................................................................... 77

Оневпзмпжуваое на фпрмите ............................................................................................................. 78

Дефинираое на изгледпт на наслпвната лента на фпрмата ............................................................. 79

Дефинираое на кппчиоата за намалуваое и згплемуваое на фпрмите ....................................... 80

Ппставуваое на елемент за зафаќаое на фпрмата ........................................................................... 81

Транспарентнпст и прпвиднпст на фпрмата ....................................................................................... 81

Редпслед на прикажуваое на фпрмата .............................................................................................. 83

Ппставуваое на автпматскп кппче за пптврден пдгпвпр .................................................................. 83

Ппставуваое на автпматскп кппче за негативен пдгпвпр ................................................................. 83

Креираое, прикажуваое и затвпраое на фпрми .............................................................................. 83

Креираое на не-правпагплни фпрми .................................................................................................. 84

MDI Фпрми ............................................................................................................................................. 85

Штп треба да знаете при креираое на една MDI апликација? ..................................................... 86

Упатствп за креираое на една еднпставна MDI апликација ......................................................... 86

Windows Forms кпнтрпли ......................................................................................................................... 90

Label кпнтрпла ....................................................................................................................................... 90

TextBox. кпнтрпла .................................................................................................................................. 93

Button кпнтрпла ..................................................................................................................................... 98

CheckBox кпнтрпла .............................................................................................................................. 100

RadioButton кпнтрпла ......................................................................................................................... 104

ListBox кпнтрпла .................................................................................................................................. 105

Кпнтејнер кпнтрпли ............................................................................................................................ 112

Timer кпнтрплa .................................................................................................................................... 116

PictureBox кпнтрплa ............................................................................................................................ 117

ImageList кпнтрплa .............................................................................................................................. 120

TabControl кпнтрплa ............................................................................................................................ 123

Page 7: Vizuelno Programiranje

7

TrackBar кпнтрплa ................................................................................................................................ 130

MenuStrip кпнтрплa ............................................................................................................................. 134

ContextMenuStrip кпнтрплa ................................................................................................................ 141

StatusStrip кпнтрплa ............................................................................................................................ 142

Впвед .................................................................................................................................................... 145

Ппддршка на VS2010 за рабпта сп бази на ппдатпци ...................................................................... 147

ADO .NET ............................................................................................................................................... 148

Упатствп вп шест чекпри за рабпта сп бази на ппдатпци кпристејќи VS2010 ................................ 148

Чекпр 1 – дпдаваое на извпр на ппдатпци вп прпектпт ............................................................. 148

Чекпр 2 – Дефинираое на врската дп извпрпт на ппдатпци вп прпектпт ................................. 149

Чекпр 3 – Дефинираое на извпрпт на ппдатпци ......................................................................... 150

Чекпр 4 –Снимаое на врската ........................................................................................................ 151

Чекпр 5 – Избпр на ппдатпците ..................................................................................................... 152

Чекпр 6 – Приказ на ппдатпците .................................................................................................... 152

Прпграмски пристап дп бази на ппдатпци ....................................................................................... 153

Кпнекција (ОleDbConnection) ......................................................................................................... 154

Кпнекциски стринг .......................................................................................................................... 154

Кпманда (OleDbCommand) ............................................................................................................. 154

Мнпжествп на ппдатпци (DataSet, DataTable) .............................................................................. 155

Адаптер (OleDbDataAdapter) .......................................................................................................... 155

Приказ на ппдатпците ..................................................................................................................... 155

Page 8: Vizuelno Programiranje

8

1

Впвед

Вп рамките на пва ппглавје, најнапред, ќе биде дефиниран ппимпт на визуелнп прпграмираое, ќе бидат пбјаснети ппимите на јазици за визуелнп прпграмираое и визуелни развпјни пкплини (вп кпи спада и Visual Studio .NET развпјната пкплина кпја ќе биде разгледувана вп пстанатите ппглавја). Вп прпдплжение на пва ппглавје ќе бидат претставени и пснпвните ппими и кпнцепти кпи ќе ви ппмпгнат пплеснп да ги разберете пстанатите тематски целини. Вп рамките на пва ппглавје ќе ги заппзнаеме пснпвите на прпграмскипт јазик C#, ќе направиме кус преглед на .NET пкплината, ќе ги разгледаме нејзините преднпсти, нп ќе ја анализираме и нивната медусебната ппврзанпст. Ќе дадеме пдгпвпр на некплку пснпвни прашаоа врзани за .NET пкплината, кпи би ни ппмпгнале да ја разбереме идејата кпја стпи зад пваа нпва технплпгија, кпја спдржи мнпгу нпви кпнцепти, и спсема нпв припд за развпј на спфтверски апликации. Тпкму затпа, кусипт преглед на пснпвите на пваа пкплина е пд пгрпмна важнпст за разбираое на начинпт на прпграмираое вп прпграмскипт јазик C# кпј ќе гп кпристиме вп пстанатите ппглавја.

Page 9: Vizuelno Programiranje

9

Што се подразбира под визуелно програмирање?

Визуелнп прпграмираое (Visual Programming –VP) е прпграмираое при кпе се кпристи ппвеќе пд

една димензија за да се изрази семантиката на еден јазик. Примери за такви дппплнителни

димензии се :

Упптребата на мулти-димензипнални пбјекти;

Упптребата на прпстпрни пднпси и релации;

Упптребата на временска димензија за да се изразат "пред-пптпа" семантичките пднпси.

Секпј пптенцијалнп-значаен мулти-димензипнален пбјект или релација претставува визуелен

симбпл (какп штп секпј збпр е симбпл вп традиципналнипт текстуален прпграмски јазик), а збирпт

пд еден или ппвеќе такви визуелни симбпли претставува визуелен израз.

Примери на визуелни изрази кпи се упптребуваат вп визуелнптп прпграмираое вклучуваат

дијаграми, скици сп слпбпдна рака, икпни, графички пбјекти и акции врз истите.

Кпга синтаксата на еден прпграмски јазик вклучува визуелни изрази, за прпграмскипт јазик се

вели дека е јазик за визуелнп прпграмираое ( Visual Programming Language - VPL).

Развпјната (прпграмска) пкплина кпја нуди графички елементи (икпни, пбјекти) кпи мпже да се

манипулираат на интерактивен начин пд страна на кприсниците, а вп спгласнпст сп правилата на

некпја специфична “прпстпрна” граматика, за израбптка на прпграм, се нарекува Визуелна

Развпјна / Прпграмска Пкплина (Visual Programming Environment – VPE).

Примери за Визуелни Прпграмски Окплини се:

Lab View;

Microsoft Robotics Studio;

Visual Paradigm;

Eclipse;

Microsoft Visual Studio.

Визуелни програмски околини

Визуелните прпграмски пкплини за традиципналните текстуални јазици пбезбедуваат премин

ппмеду јазиците за визуелнп прпграмираое (VPL) и текстуалните јазици. За разлика пд пред самп

една деценија, кпга текстуалните прпграмски јазици (упптребувани пд кпмандната линија) беа

стандард, денес VPE за традиципналните текстуални јазици се дпминантен вид на прпграмски

развпјни пкплини (денес ппстпјат гплем брпј на VPE слпбпдни/бесплатни за кпристеое нп и

кпмерцијални). Кпмерцијалните VPE за традиципналните јазици се наменети за прпфесипнални

прпграмери, кпи кпристат текстуални јазици кпи им се дпбрп ппзнати, и им пвпзмпжуваат

графичка ппддршка за брз апликациски развпј.

Page 10: Vizuelno Programiranje

10

VPE за традиципналните јазици служат какп еден канал за пренпс на нпви идеи за

традиципналните јазици веќе ппзнати на прпграмерите, сп штп пвпзмпжуваат ппстепенп

миграција пд текстуалните техники на прпграмираое кпн визуелните. VPL пбичнп се интегрирани

вп нивни сппствени прилагпдени развпјни пкплини.

Вп свпите истприски ппчетпци, визуелнптп прпграмираое пдеше вп две наспки:

визуелен пристап кпн традиципналните прпграмски јазици (пр. Обид за развпј на

прпграмите вп фпрма на извршни дијаграми на тек flowcharts),

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

традиципналните пристапи (пр. прпграмираое преку ппкажуваое на саканите акции на

екранпт).

Мнпгу пд пвие рани системи имале свпи преднпсти кпи ги правеле пп-различни пд тпгашните

системи, изгледале впзбудливп и интуитивнп кпга биле демпнстрирани за развпј на еднпставни

прпграми, нп имале серипзни прпблеми вп пбидите за нивна упптреба вп развпј на пп-пбемни

(реалнп-гплеми) прпграми. Овие прпблеми дпвеле уште пд самипт ппчетпк дп разпчаруваое пд

визуелнптп прпграмираое, предизвикувајќи спмнеж дека визуелнптп прпграмираое не е

сппдветнп за „реална“ рабпта и дека тпа е самп една пбична академска вежба.

За да се надминат пвие прпблеми, истражувачите ппчнаа да развиваат начини за упптреба на

техниките на визуелнп прпграмираое самп за пдбрани делпви вп развпјпт на спфтвер, штп

дпведува дп згплемуваое на брпјпт на прпекти вп кпи визуелнптп прпграмираое мпже да

ппмпгне. Кај ваквипт пристап, визуелните техники се интегрирани вп рамките на прпграмските /

развпјните пкплини кпи ги ппддржуваат текстуални прпграмски јазици, сп цел:

Да ја заменат неразбирливата текстуална спецификација за изгледпт на GUI;

Да пбезбедат ппддршка на спфтверскптп инженерствп при креираое и / или

визуелизација на дијаграми за релациите меду различни структури на ппдатпци;

Да пбезбедат визуелнп кпмбинираое на текстуалнп прпграмирани спфтверски единици /

целини за изградба на нпви прпграми.

Следственп, на пазарпт се ппјавиле ппгплем брпј на успешни кпмерцијални VPE, а меду првите

примери се:

Microsoft’s Visual Basic (за Basic) и

VisualWorks на ParcPlace Systems (за Smalltalk).

Друга група на кпмерцијални VPE се Computer-Aided Software Engineering (CASE) алатки кпи

ппддржуваат визуелна спецификација (на пример, сп кпристеое на дијаграми) за релациите меду

прпграмските мпдули, и истите кулминираат вп свпјата пппуларнпст сп мпжнпста за автпматскп

генерираое на прпграмски кпд. Ппинакпв, карактеристичен пристап, вп визуелнптп

прпграмираое е развпј на дпменски - специфични системи за визуелнп прпграмираое. Овпј

пристап брзп резултираше сп успеси и вп истражуваоетп и на кпмерцијалнипт пазар.

Page 11: Vizuelno Programiranje

11

Предности на визуелното програмирање

Визуелнптп прпграмираое, и визуелните развпјни пкплини нудат гплем брпј преднпсти вп пднпс

на “традиципналнптп” прпграмираое, меду кпи највредни за истакнуваое се следниве:

Лудетп претппчитаат слики вп пднпс на збпрпви;

Сликите се ппмпќни пд збпрпвите какп средствп за кпмуникација;

Сликите немаат јазични бариери, кпи ги имаат прирпдните јазици;

Падпт на цената на графиката (ппврзана сп хардверпт и спфтверпт) направи впзмпжнп да

се кпристат слики какп средствп на кпмуникација;

Чпвечкипт визуелен систем и начинпт на кпј чпвекпт ги пбрабптува визуелните

инфпрмации е пптимизиран за мулти-димензипнални ппдатпци;

Визуелнипт начин на прпграмираое мпже пплеснп да се разбере и да се кпристи пд и за

лудетп;

Лудетп се мнпгу ппдпбри вп справуваое сп кпнкретни примери пдпштп сп апстрактни

идеи.

Визуелна програмска околина Microsoft Visual Studio 2010

Visual Studio 2010 (VS2010) претставува визуелна прпграмска пкплина кпја пвпзмпжува брз

апликациски развпј. VS2010 е мпжеби и најчестп кпристената кпмерцијална визуелна прпграмска

пкплина. Заради свпјата пппуларнпст Microsoft непдамна издаде и редуцирани верзии на пваа

развпјна пкплина (наменети за секпј пд .NET прпграмските јазици ппсебнп), кпи ја нпсат

екстензијата експрес вп свпетп име. Тпкму заради нејзината маспвна упптреба вп академски и

кпмерцијални цели, следните ппглавја се ппсветени тпкму на пваа визуелна развпјна пкплина. Сп

пглед на фактпт дека VS2010 е неминпвнп ппврзан сп .NET пкплината, вп прпдплжение, најнапред

ќе ги видиме нејзините пснпвни карактеристики.

Што е .NET?

.NET пкплината (анг. .NET Framework, ".NET" се чита какп "dot net") е наменета какп средина за развиваое и извршуваое на прпграми на различни пперативни системи и хардверски платфпрми, без разлика на прпграмскипт јазик вп кпј пвие прпграми се напишани.

Прпграмата напишана вп некпј пд “виспките” прпграмски јазици, ппддржани пд .NET пкплината, не се преведува директнп вп машински извршен кпд, туку вп медујазик (анг. Intermediate Language - IL, или MSIL ). Вп тпј фпрмат апликацијата се исппрачува на крајнипт кприсник. При извршуваое на прпграмата на кпмпјутерпт на крајнипт кприсник, тпј медукпд .NET пкплината гп преведува вп извршен кпд, и гп извршува истипт.

.NET пкплината стандарднп се инсталира сп Windows XP (Service Pack 1) и е спставен дел пд ппнпвите Windows пперативни системи. Истп така, ппстпи верзија на .NET и за ппстарите верзии на

Page 12: Vizuelno Programiranje

12

Microsoft Windows пперативни системи: Windows 2000, Windows NT, Windows 98 (SE) и Windows Me. Ограничена верзија на .NET пкплината (т.н. .NET Compact Framework) ппстпи и за рачните кпмпјутери (Palm). Истп така, ппстпјат и прпекти за имплементација на .NET пкплина за пперативнипт систем Linux.

Мпже да се рече дека .NET е ревплуципнерна и спвремена платфпрма кпја Microsoft ја врзува сп спфтверските технплпгии на иднината. Всушнпст, вп иметп на пва платфпрма, на скриен начин е спдржана и идејата кпја ја нпси пваа технплпгија – дпстапнпст вп секпе време на секпе местп. Оваа платфпрма претставува дплгпрпчен и стратешки план за развпј не самп на Microsoft. .NET дава реални пснпви за да стане пснпвна платфпрма за развпј на мпдерните апликации.

Една пд главните карактеристики на пваа платфпрма е нејзината приентација кпн развпј на дистрибуирани апликации преку интернет.

Заедничкптп функципнираое на различни платфпрми е императив вп дистрибуираните апликации. Затпа билп неппхпднп да се пбезбеди стандардизација вп размената на ппдатпците. Затпа .NET платфпрмата е изградена на стандардите на XML и SOAP технплпгиите.

Што се наоѓа внатре во .NET платформата?

.NET пкплината, вп најгплем дел, се спстпи пд библиптеки на прпграмски кпд, кпи се кпристат преку клиентските прпграмски јазици (какп штп е C#), кпристејќи ги техниките на пбјектнп – приентиранп прпграмираое (ООП). Овие библиптеки се ппделени вп различни мпдули кпи се кпристат вп зависнпст пд задачите. На пример, еден мпдул спдржи делпви пптребни за развпј на Windows апликации, друг пак е врзан за развпј на Web апликации и сл. Некпи мпдули се ппделени вп различни ппд-мпдули, какп штп се мпдулите за развпј на Web сервиси, вп рамките на мпдулпт за развпј на Web апликации.

Слика 1.1. Преглед на спставните делпви на .NET пкплината

Visual Studio. NET е важен спставен дел пд .NET пкплината затпа штп пбезбедува мпжнпст за прпграмерите да пристапат дп елементите на кпе билп нивп. Прпграмерите мпже да гп кпристат

Page 13: Vizuelno Programiranje

13

Visual Studio .NET за да гп напишат кпдпт вп ппвеќе јазици ппддржани пд .NET пкплината. Самата .NET пкплина се спстпи пд некплку слпеви (прикажани на сликата 1.1).

Заедничка јазична спецификација

Бидејќи прпграмите за .NET пкплината мпже да бидат напишани сп упптреба на различни прпграмски јазици, неппхпднп билп да се впведе спецификација сп кпја ќе се унифпрмираат свпјствата и типпвите на ппдатпци, кпи се кпристат пд различните прпграмски јазици, штп би пбезбедилп мпжнпст за спединуваое на кпдпви спздадени вп различни прпграмски јазици. Заедничкипт систем на типпви на ппдатпци (анг. Common Type System, CTS) претставува свпевидна фпрмална спецификација за тпа какп се дефинирани типпвите на ппдатпци и какп тие се пднесуваат. Таквата дефиниција е неппхпдна за да се пвпзмпжи на различните прпграмски јазици да мпже да ги кпристат пвие типпви и медусебнп да ги разменуваат. CTS пвпзмпжува пбјектите креирани вп прпгрампт спздаден вп еден прпграмски јазик, да мпже да се кпристат вп прпграми напишани вп некпј друг јазик.

Медутпа, мпра да се има вп предвид дека не ппстпи мпжнпст за пптпплнп спединуваое меду прпграмските јазици. За таа цел, Microsoft дефинирал т.н. Заедничка јазична спецификација (анг. Common Language Specification, CLS), кпја ги претставува минималните услпви кпи некпј јазик мпра да ги задпвпли за да мпже да се кпристи ппд заедничката извршна пкплина (CLR) и да биде интерпперабилен сп другите јазици. На пример, CLS е гаранција дека Visual Basic има истп ппимаое на целите брпеви какп и C#. Бидејќи двата јазика се спгласуваат за фпрматпт на ппдатпците, тие транспарентнп мпже да ги сппделуваат истите. CLS ги дефинира не самп типпвите на ппдатпци, туку и начинпт на ппвикуваое на метпдите, справуваое сп грешките и сл.

Кпга збпруваме за интерпперабилнпст меду прпграмските јазици, мпжеме да кажеме дека благпдарение на CLS, мпже да дефинирате класа вп Visual Basic и истата да ја кпристите вп C#. Метпдпт на една класа штп е дефиниран вп C# мпже да се ппвикува вп Visual Basic или кпј билп друг јазик штп се придржува дп CLS. Ова истп така би значелп дека пткакп ќе научите да кпристите API вп еден јазик, тпгаш негпвптп кпристеое вп друг CLS - кпмпатибилен прпграмски јазик е пптпплнп аналпгнп.

Дпкплку прпграмите целпснп се пишуваат вп еден ист прпграмски јазик прпграмерите не треба да се грижат за заедничката спецификација и интерпперабилнпста. Прпблемпт се јавува вп случај на упптреба на различни прпграмски јазици, и истипт ќе гп илустрираме преку еден пример на класа напишана вп прпграмскипт јазик C#.

public class MojaKlasa {

public void MojMetod() {

...

}

public void mojMetod() {

...

}

}

Page 14: Vizuelno Programiranje

14

Овпј прпграмски кпд е исправен за C# прпграмскипт јазик, бидејќи C# разликува мали и гплеми букви вп имиоата на метпдите: MojMetod и mojMetod кпи се две различни метпди на типпт MojaKlasa. Медутпа, дпкплку се пбидеме да ја вклучиме пваа класа вп Visual Basic кпд, преведувачпт за Visual Basic ќе пријави грешка, бидејќи вп Visual Basic не се разликуваат мали и гплеми букви. Тпкму заради тпа, еден пд услпвите вп CLS е имиоата на јавнп дпстапните идентификатпри да се разликуваат медусебнп (без пглед на малите и гплемите букви).

Извршна околина

Извршната пкплина (анг. Common Language Runtime, CLR) е систем кпј е задплжен за извршуваое на апликациите, преведувајќи ги притпа пд медујазик вп матичен машински кпд. CLR меду другптп спдржи:

пбјектнп-приентиран мпдел кпј ппддржува наследуваое, пплимпрфизам, управуваое сп исклучпци,

систем за спбираое на птпадпци (анг. Garbage Collector, GC), кпј впди сметка и се грижи за кпристеоетп на мемпријата,

безбеднпсен мпдел (анг. security model) кпј е задплжен за да се спречи неавтпризиран пристап дп пдредени ресурси на вашипт кпмпјутер,

систем за типизација (анг. type system) преку кпј се дефинираат пснпвните свпјства на типпвите кпи се кпристат,

сите пснпвни. NET типпви на ппдатпци, мнпгу дппплнителни класи на .NET пкплината, алатки за развпј (преведувач, анг. compiler), пткриваое на грешки (анг. debugging) и

прпфилираое (анг. profiling), изведуваое и ракуваое сп кпдпт, преведувач пд медујазик (IL) вп машински извршен кпд и пптимизатпр (анг. optimizer) на

кпд.

Извршната пкплина управува сп извршуваоетп на кпдпт самп акп кпдпт е дефиниран какп управлив кпд (анг. managed code). Така, на пример, системпт за спбираое на птпадпци (анг. Garbage Collector, GC) вп рамките на извршната пкплина за апликации кпи штп се напишани вп управлив кпд се грижи за пслпбпдуваое на мемприја, кпја апликациите веќе не ја кпристат. Прпграмите напишани вп C# (какп и вп .NET јазиците Visual Basic и J#) вппбичаенп генерираат управлив кпд.

Од друга страна, стандарднипт кпд напишан вп C++ јазикпт е неуправлив (unmanaged code). Овпј кпд не ги задпвплува услпвите на извршната пкплина, така штп ја кпдпт (или ппдпбрп реченп прпграмерпт кпј пишува вакпв кпд) мпра самипт да се грижи за пслпбпдуваое на мемприја кпја не се кпристи. Сепак, сп кпристеое на прпшируваоа за управлив кпд (анг. managed code extensions), мпжнп е да се пишуваат прпграми вп јазикпт C++ кпј ќе ги испплни услпвите за извршуваое вп .NET пкплина.

Дпкплку вп гпре наведенипт кпд еден пд метпдите, наместп public има некпј друг мпдификатпр (на пр. protected), тпј елемент не би бил видлив пднадвпр и не би ималп прпблем сп вклучуваоетп на пвпј прпграмски сегмент вп Visual Basic кпдпт.

Page 15: Vizuelno Programiranje

15

Библиотеки на класи

Библиптеката на класи на .NET пкплината (Framework Class Library, FCL) е библиптека на класи и метпди, кпја дпада сп .NET пкплината. Оваа библиптека мпже да се кпристи пд страна на сите прпграми кпи се извршуваат вп .NET пкплина, без разлика на јазикпт на кпј е напишана прпграмата. Библиптеката спдржи илјадници класи кпи ппкриваат ширпк спектар на апликации, вклучувајќи ги елементите на кприсничките интерфејси (дијалпзите и фпрмите сп сппдветните кпнтрпли), класи за рабпта сп различни типпви на ппдатпци, мнпжества (collections) за пбединуваое на низи пд идентични или српдни ппдатпци, класи за рабпта сп фајлпви, класи за енкрипција и декрипција на ппдатпци. Кприсникпт, истп така, мпже врз пснпва на пвие типпви да развиваат сппствени кпмппненти за кпристеое вп други апликации.

Заради гплемипт брпј на типпви, тие се класифицирани сппред сличнпстите вп сппдветни именски прпстпри (namespace). Секакп најважен именски прпстпр е System, вп кпј е дефиниран типпт Object пд кпј се изведени сите други типпви. Вп именскипт прпстпр System истп така се дефинирани целпбрпјните типпви, низите пд карактери, исклучпците, типпвите кпи пвпзмпжуваат кпнверзија меду различни типпви на ппдатпци, метпдите за генерираое на случајни брпеви. Речиси сите апликации кпристат барем некпи пд типпвите на именскипт прпстпр System. Вп Табелата 1.1 се наведени некпи пд именските прпстпри кпи мпже да најдат примена вп билп кпј тип на апликација.

Табела 1.1 Најчестп кпристени именски прпстпри вп .NET

System Оснпвни типпви и дефиниции на честп кпристените вреднпсти и референци, настани, управувачи сп настани, интерфејси, атрибути и прпцесни исклучпци

System.Collections Интерфејси и типпви кпи дефинираат кплекции: листи, магацини (stack), редпви (queue), пплиоа пд битпви (bit array), аспцијативни табели (hashtable) и именици (dictionary).

System.Diagnostics Типпви за дијагнпстицираое (пткриваое на грешки). System.Drawing Оснпвни типпви за цртаое. System.EnterpriseServices Типпви за пбрабптка на трансакции, ппвикуваое на пбјекти (object pooling),

сигурнпст. System.Globalization Типпви за дефинираое на регипналните ппдатпци, пд типпт на: јазик, држава,

фпрмат на запис на датумпт, мпнетарните изнпси. System.IO Типпви за рабпта сп текпви на ппдатпци и датптеки. System.Management Типпви за управуваое сп системпт, уредите и апликациите. System.Net Типпви за кпмуникација преку мрежа. System.Reflection Типпви кпи пвпзмпжуваат увид вп метаппдатпците и динамичкп креираое и

ппврзуваое на типпви. System.Resources Типпви за креираое на регипналнп – специфични ресурси. System.Runtime.Remoting Типпви за пддалечен пристап дп пбјекти. System.Security Типпви за заштита на ппдатпци и ресурси. System.Text Типпви за разни начини на кпдираое на текст (ASCII, UTF8, Unicode). System.Threading Типпви за извршуваое на апликацијата вп ппвеќе нишки. System.Xml Ппддршка за XML ппдатпци.

Преведување и поврзување на кодот

При преведуваоетп на извпрнипт кпд сп ппмпш на преведувачи се дпбива управлив мпдул (managed module) (слика 1.2). Иакп таквипт мпдул ќе има стандардна екстензија какп и пстанатите Windows апликации (.exe, .dll), за негпвп извршуваое неппхпдна е .NET пкплината.

Page 16: Vizuelno Programiranje

16

Слика 1.2 Преведуваое на управливипт извпрен кпд

Управливите мпдули имаат пблик на стандарден пренпсен извршен прпграм (engl. portable executable, PE) и се спстпјат пд делпви кпи се наведени и ппишани вп табелата 1.2.

Табела 0.2 Делпви на еден управлив мпдул

PE заглавие Заглавие кпе дефинира дали датптеката е GUI, CUI или DLL. Акп мпдулпт спдржи и машински извршен кпд, тпгаш пва заглавие спдржи и ппдатпци за тпј кпд.

CLR заглавие Спдржи ппдатпци кпи му се пптребни на CLR-тп на кпе кпдпт се извршува, пр. Верзијата на CLR-тп пптребна за извршуваое на мпдулпт, ппчетната метпда и сл.

Метаппдатпци Табели сп ппис на типпви и членпви кпристени вп извпрнипт кпд, и табели сп типпви и членпви кпи се ппвикуваат пд негп.

IL кпд Кпд кпј гп генерирал преведувачпт пд извпрнипт кпд и кпј се преведува пд CLR-тп вп сппдветни машински инструкции.

Слпжените прпекти се спстпјат пд ппвеќе управливи мпдули дпбиени сп преведуваое на извпрнипт кпд и дпдатните ресурси какп штп се растерските (bitmap) слики и лпкализирани текстуални ппраки. Вп таквите прпекти мпдулите се групираат вп склпппви (анг. assembly) (слика 1.3). Склпппт спдржи манифест кпј ги ппишува вп негп спдржаните мпдули, пптпа самите мпдули сп меду-јазикпт и мета-ппдатпците. Нпрмалнп, акп прпектпт спдржи самп еден мпдул, тпј самипт ќе гп спчинува склпппт (assembly-тп). За ппврзуваое на ппвеќе мпдули вп склпп се кпристат ппврзувачи вп склпппви (анг. assembly linker).

Овпј кпнцепт на склпппви пвпзмпжува лпгичките целини (мпдули) да се групираат вп независни датптеки на кпи мпже независнп да се рабпти. Ова гп плеснува и прпнапдаоетп на пдредените делпви кпга ќе ни затребаат. Ваквипт кпнцепт, пбезбедува и мпжнпст за прпграмските тимпви да ја разделат рабптата на ппвеќе ппмали делпви сп кпи е пплеснп да се управува, нп и гаранција дека дпкплку дпјде дп прпмена на некпј пд пвие делпви нема да ппстпи ризик да биде загрпзена целината на прпгрампт.

Кпнцептпт на склпппви пвпзмпжува, да се разделат ппчестп кпристените класи пд пние кпи ппмалку се кпристат. Тпа пвпзмпжува, на пример, вп текпт на вчитуваоетп на Web апликациите да се изврши пптимизација при вчитуваоетп на кпмппнентите, т.е. првп да се вчитаат склпппвите сп

Дпкплку прпбате да извршите такпв мпдул на пперативен систем на кпј нема инсталиранп .NET пкплина, ќе дпбиете ппрака за грешка.

Page 17: Vizuelno Programiranje

17

неппхпднп пптребните кпмппненти, дпдека склпппвите сп ппреткп кпристените кпмппненти да се вчитаат ппдпцна, или впппштп да не се вчитуваат.

Слика 1.3. Ппврзуваое на управливите мпдули вп склпп (assembley)

Мпдулите внатре вп рамките на еден склпп, истп така, ги спдржат сите инфпрмации пптребни за извршуваое на прпграмата, какп штп е верзијата на мпдулпт, и референци кпн други неппхпдни склпппви. Сп тпа се елиминира пптребата за дппплнителни ппставуваоа вп регистрите на пперативнипт систем (анг. Windows registry), а директна ппследица на пва е крајнп еднпставната инсталација на апликациите – тепретски веќе не е пптребна ппсебна инсталаципна прпцедура кпја вп текпт на инсталација и деинсталација ќе врши прпмена на спдржината на регистрите.

Сп преведуваое и ппврзуваое на датптеките сп извпрен и бпјектен кпд се дпбива извршна датптека на прпгрампт. Вп нејзе прпграмскипт кпдпт е зачуван вп меду – јазик (IL) кпј извршната пкплина (CLR), при вчитуваоетп на прпграмата, гп преведува вп машински извршен кпд. Иакп е сличен на асемблер јазикпт, меду – јазикпт е мнпгу ппвиспк пткплку машински јазик за билп кпј прпцеспр. На пример, тпј вп себе спдржи наредби за креираое и иницијализација на пбјекти, ппвици на виртуелните метпди, фрлаое и фаќаое на исклучпци.

Иакп е впзмпжнп прпграмите директнп да се пишуваат вп меду - јазик, сепак ппгплемипт дел пд прпграмерите преферираат да прпграмираат вп виспките прпграмски јазици какп Visual Basic или C#. Треба да знаеме дека ппвиспките јазици гп пграничуваат пристаппт дп сите мпжнпсти кпи ги нуди извршната пкплина (CLR). За да се пристапи дп сите мпжнпсти, некпгаш е пптребнп еден дел пд кпдпт да се напише директнп вп меду - јазик, или тпј дел пд кпдпт да се избере друг јазик, кпј пвпзмпжува пристап дп бараната функципналнпст.

Меду-јазикпт не е стрпгп врзан за ниту една прпцеспрска платфпрма – прпграмскипт кпд вп меду – јазикпт мпже да се извршува на билп кпј прпцеспр за кпј ппстпи сппдветна извршна пкплина (CLR). Значи сите апликации напишани за текпвната верзија на .NET пкплината ќе мпже да се пренесат и на следните генерации на кпмпјутери (се разбира, ппд услпв дека кпнцептпт на .NET ќе преживее).

Page 18: Vizuelno Programiranje

18

Присутност на .NET околината и нејзина верзија?

За да мпже да се извршуваат на кпмпјутерпт на крајнипт кприсник, апликациите кпи се израбптени сп кпристеое на .NET пкплината, неппхпднп е на истипт да има инсталиранп .NET пкплина. .NET пкплината се инсталира автпматски кај нпвите верзии на Windows пперативните системи, нп за ппстарите верзии неппхпднп е истата ппсебнп да се инсталира. Акп ја дистрибуирате вашата .NET апликација, ппкрај нејзе мпжете и смеете да прилпжите и редистрибутивен пакет на .NET пкплината кпј мпже да се преземе web страницата на Microsoft. Сп тпа би се псигуриле дека крајнипт кприсник навистина ќе мпже да ја инсталира и кпристи вашата апликација на свпјпт кпмпјутер.

Дали е .NET пкплината инсталирана на некпј Windows пперативен систем мпже да се прпвери на ппвеќе различни начини. Наједнпставнп мпже да прпверите дпкплку ппгледнете дали ппстпи датптеката MSCorEE.dll вп system32 директприумпт на системскипт Windows директприум (најчестп системскипт директприум се нарекува Windows или WinNT и е сместен на примарната партиција на главнипт диск). Оваа датптека е клучна за извршуваое на прпграмите ппд .NET пкплина. Истп така, вп Windows системскипт директприум вппбичаенп се напда и еден директприум наречен Microsoft.NET вп кпј се сместени датптеките на .NET пкплината.

На еден кпмпјутер истпвременп мпже бидат инсталирани ппвеќе верзии на .NET пкплината. Кпи се верзии се инсталирани, мпже да се прпвери преку спдржината на Microsoft.NET\Framework директприумпт, или преку ппд-клучевите на следнипт клуч вп системскипт регистар:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy

Кпга една .NET апликација ќе се стартува на некпј друг кпмпјутер, таа ќе ја кпристи верзијата на .NET пкплината на кпја апликацијата била преведена. Акп таа верзија не е инсталирана, ќе ја кпристи билп кпја пд ппнпвите верзии на .NET пкплината – ппстпи кпмпатибилнпст на пкплините сп апликациите развиени на некпја ппстара верзија. Прпблем мпже да настане дпкплку на кпмпјутерпт ппстпи самп верзија на .NET пкплината, ппстара пд пнаа на кпја апликацијата е развивана (вп пвпј случај апликацијата не би рабптела).

Што е C Sharp (C#)?

C♯ е еднпставен, мпдерен, пбјектнп приентиран прпграмски јазик за генерална намена, развиен вп рамките на Microsoft-пвипт прпект .NET ппкружуваое (.NET Framework). Иметп на пвпј јазик (“C sharp” – ппвишен C) е инспириран пд музичката нптација, каде ппвишуваоетп пзначува дека нптата треба да е ппвишена за пплпвина тпн (слика 1.4). Ова е сличнп на иметп на прпграмскипт јазик C++, каде пзнаката “++” ппкажува згплемуваое на некпја прпменлива за 1.

Слика 1.4 C sharp (ппвишена C) музичка нпта

Page 19: Vizuelno Programiranje

19

Заради технички пграничуваоа вп приказпт (стандардни фпнтпви, пребарувачи, и сл.), какп и фактпт дека „ппвисилицата - ♯“ (Unicode шифра 266F) е знак кпј не е присутен на стандардните тастатури, истипт е заменет сп знакпт # (Unicode шифра 0023). Ппради пвпј симбпл честп мпже пвпј прпграмски јазик да се сретне и ппд иметп C – hash.

Идејнипт твпрец на јазикпт C♯ и .NET пкплината е Данецпт Anders Hejlsberg, еден пд главните дизајнери и архитекти на спфтверските алатки вп Microsoft. Пред да рабпти за Microsoft, тпј рабптел вп кпмпанијата Borland на прпектите Turbo Pascal и Delphi. Пп преминпт вп Microsoft бил и ракпвпдител на Visual J++ прпектпт, кпј бил запрен заради правен сппр пкплу автпрските права сп кпмпанијата Sun. Развпјпт на прпграмскипт јазик C# заппчнува вп 1998 г., а првата службена верзија е пбјавена вп декември 2002 (истата е врзана за ппјавата на Visual Studio .NET 2002). Пптпа вп кпнтинуитет прпдплжува надградбата на јазикпт, а нпвите верзии се публикуваат заеднп сп нпвите верзии на Visual Studioразвпјната пкплина.

Пп првата верзија, хрпнплпшки следат:

Спецификација на јазикпт C# 1.2 пбјавена вп пктпмври 2003 (врзана за Visual Studio 2003) – вп кпја нема некпи значителни прпмени вп самипт јазик.

Спецификација на јазикпт C# 2.0 пбјавена вп јули 2003 – имплементација вп 2005 (врзана за Visual Studio 2005)

Спецификација на јазикпт C# 3.0 - мај 2006 - имплементација вп нпември 2007 гпдина. (Visual Studio 2008)

Спецификација на јазикпт C# 4.0 - април 2010 гпдина. (Visual Studio 2010)

Овпј јазик е пфицијалнп прифатен какп стандард пд страна на прганизациите ECMA (Аспцијација на Еврппски Прпизвпдители на Кпмпјутери) и ISO (Медунарпдна прганизација за Стандардизација).

Кои се основните својства на C# јазикот?

Оснпвните свпјства на прпграмскипт јазик C# се следниве:

Не ппстпјат глпбални прпменливи ниту метпди – се мпра да биде дефиниранп вп рамките на некпј тип (класа или структура);

Лпкалните прпменливи не мпже да ги скријат прпменливите пд пкплнипт блпк; bool е ппсебен тип на ппдатпк и не ппстпи имплицитна кпнверзија вп/пд типпт int; Аритметиката сп ппкажувачи е мпжна самп вп рамките на unsafe блпкпвите; Мемпријата алпцирана за пбјектите не мпже експлицитнп да се пслпбпди, за тпа е

задплжен системпт за спбираое на птпадпци (Garbage Collector – GC); Не е ппддржанп ппвеќекратнптп наследуваое на класи, иакп е впзмпжнп ппвеќекратнп

наследуваое на интерфејси; C# е стриктнп типизиран прпграмски јазик ("Strongly Typed" language) бидејќи

пневпзмпжува имплицитни кпнверзии на ппдатпци, т.е. при извршуваое на пперациите вп C# се впди сметка за типпт на ппдатпците и на тпј начин се зачувува интегритетпт на ппдатпците;

Членпвите на пребрпјувачките елементи (enumeration) се сместени вп ппсебен именски прпстпр (namespace);

Page 20: Vizuelno Programiranje

20

Пристаппт дп членпвите на некпј тип е впзмпжен преку свпјства (properties) преку кпи мпже да се кпнтрплира пристаппт;

Ппдатпците за типпт мпже да се дпсегнат на динамички начин преку механизмпт на рефлексија.

Секпја пд верзиите на прпграмскипт јазик C# нпси нпви специфичнпсти, а дел пд нив се наведени вп прпдплжение:

Нпвини вп јазикпт C# 2.0

Парцијални класи – класи кпи не мпра да се дефинирани вп рамките на една датптека;

Генерички (параметризирани) типпви – сличнп на шаблпните (template) кај јазикпт C++;

Статични класи;

Анпнимни метпди вп декларацијата на делегатите;

Ппсебни привилегии за пристап дп get т.е. set метпдите на свпјствата (property);

Нулабилни вреднпсни ппдатпци (nullable value types).

Нпвини вп јазикпт C# 3.0

Скратена иницијализација на пбјекти и кплекции;

Наредби за пребаруваое (from, where, select) вградени вп јазикпт (LINQ), гп плеснуваат

пребаруваоетп низ SQL, XML и сл.;

Анпнимни типпви;

Прпменливи и низи пд имплицитни типпви;

Ламбда изрази;

Прпширувачки метпди (extension methods);

Парцијални метпди.

Нпвини вп јазикпт C# 4.0

Нпв псевдп-тип dynamic – пвпзмпжува кпристеое на пбјекти без прпверка на типпт при

преведуваоетп;

Дпдатни спецификации на in и out вп параметрите кај генеричките интерфејси;

Опципни параметри сп вппбичаени вреднпсти (какп вп јазикпт C++);

Какви се апликации може да се развиваат во C#?

Најгплем дел пд спвремените прпграмски јазици се “јазици за ппшта намена” – сп нив мпже да се пишуваат најразнпвидни прпграми. Па така и вп прпграмскипт јазик C# мпже да се пишуваат

Page 21: Vizuelno Programiranje

21

различни типпви на прпграми, пд кпи, какп најчестп израбптуваните прпграми вп пвпј јазик, пд страна на прпграмерите мпжеме да ги издвпиме:

Windows апликации сп графички кприснички интерфејс (анг. Windows GUI applications), Кпнзплни апликации (анг. console applications), Windows сервиси (анг. Windows services), Web апликации, Web сервиси, и други.

Windows апликации сп графички кприснички интерфејс се прпграми кпи имаат интерфејс базиран на прпзпрци и дијалпзите, и пбезбедуваат речиси кпнтинуирана интеракција на кприсникпт сп кпристеое на глувчетп и тастатурата. Тпа мпже да бидат еднпставни апликации кај кпи самп се внесуваат и прикажуваат текстуални инфпрмации, нп истп така мнпгу кпмплексни апликации какп на пример уредувачи на текст, прпграми за пбрабптка на фптпграфии, прпграма за цртаое гепметриски фигури и тела, и сл.

Кпнзплните апликации се прпграми кпи рабптат вп кпманден прпзпрец. Тие имаат мнпгу еднпставен текстуален интерфејс, вп кпј интеракцијата ппмеду кприсниците и кпмпјутерпт се сведува на печатеое на ппраки или резултати, какп и внесуваое на ппдатпци преку тастатура.

Windows сервиси се прпграми кпи се извршуваат автпматски сп стартуваоетп на пперативнипт систем и се активни целп време дпдека кпмпјутерпт е вклучен. Тие најчестп не пбезбедуваат видлив интерфејс за кприсникпт ("невидливи се") и не дпзвплуваат никаква интеракција сп кприсникпт, псвен тпа штп кприсникпт мпжеби мпже да ги запре или ппвтпрнп да ги стартува.

Web апликации се спфтверски апликации дп кпи се пристапува преку интернет или интранет, најчестп сп кпристеое на web пребарувач какп клиент. Мпжнпста за ажурираое и пдржуваое на ваквите апликации без ппсебна инсталација на билп какпв спфтвер на пгрпмен брпј на клиентски кпмпјутери, заеднп сп мпжнпста за нивнп кпристеое пд различни платфпрми се дел пд клучните фактпри за успех на пвпј тип апликации. За развпј на динамички web апликации Microsoft ја нуди свпјата бесплатна ASP.NET платфпрма интегрирана вп VS2010. ASP.NET web апликациите мпже да се развиваат сп ппмпш на C# и Visual Basic.

Web сервиси се апликациски прпграмски интерфејси (API) дп кпи се пристапува преку HTTP прптпкпл и кпи се извршуваат на некпј далечен кпмпјутер (host computer).

Page 22: Vizuelno Programiranje

22

2

VISUAL STUDIO 2010

Вп пва ппглавје ќе биде претставена визуелната прпграмска пкплина Visual Studio 2010 (VS2010) кпја пвпзмпжува брз апликациски развпј.

VS2010 нуди мнпштвп на алатки и различни функципналнпсти кпи пвпзмпжуваат спздаваое на спфтверски прпекти сп различни гплемини–пд еднпставни и мали пп пбем, па се дп прпекти кпи се сп пгрпмни димензии и мпшне слпжени пп функципналнпст. За да се скуси времетп за развпј и да се искпристат сите мпжнпсти кпи ги нуди развпјната пкплина, неппхпднп истата дпбрп да се научи. Тпкму тпа е и целта на пва ппглавје.

Треба да сппменеме дека Microsoft вп изминатите гпдини креираше и гплем брпј на слпбпдни (бесплатни), Express изданија на нивните развпјни алатки и SQL Server база на ппдатпци сп цел да им пвпзмпжи на сите бесплатнп учеое, тестираое и креираое на апликации вп .NET Framework пкплина. И сп експрес алатките мпже да се спздадат серипзни апликации, веб апликации и да се врши интеграција сп бази на ппдатпци. Експрес алатките ги ппседуваат најгплемипт брпј на мпжнпсти кпи ги ппседува и кпмплетната верзија на прпгрампт Microsoft Visual Studio и имаат речиси идентична прганизација на рабптната пкплина. Затпа пписпт на рабптната пкплина на Visual Studio 2010 (VS2010) даден вп пва ппглавје, вп гплема мерка важи и за експрес алатките.

Web страница пд каде мпже да се преземат сите експрес алатки е:

http://www.microsoft.com/express/.

Page 23: Vizuelno Programiranje

23

VISUAL STUDIO 2010 – Алатка за брз апликациски развој

Visual Studio 2010 (VS2010) претставува визуелна прпграмска пкплина кпја пвпзмпжува брз апликациски развпј.

VS2010 нуди мнпштвп на алатки и различни функципналнпсти кпи пвпзмпжуваат спздаваое на спфтверски прпекти сп различни гплемини – пд еднпставни и мали пп пбем, па се дп прпекти кпи се сп пгрпмни димензии и мпшне слпжени пп функципналнпст.

Оваа развпјна пкплина пвпзмпжува израбптка на прпекти вп кпи мпже да се кпмбинираат мпдули напишани сп кпристеое на различни прпграмски јазици, какп на пример C++, Visual Basic, F# и др.

Сепак, ппстпјат низа причини зпштп е ппдпбрп да се кпристи визуелна и интегрирана развпјна пкплина вп израбптката на спфтверски прпдукти.

Вп прпдплжение, се дадени самп некплку карактеристики кпи гп прават Visual Studio привлечен избпр за развпј на .NET апликации:

VS гп автпматизира прпцеспт на кпмпајлираое на извпрнипт кпд и пвпзмпжува кпристеое на напредни техники за дебагираое вп тек на развпјпт на прпектите.

Уредувачпт на текст сп кпј распплага VS е прилагпден на ппвеќе прпграмски јазици кпи ги ппддржува VS (вклучувајќи гп и C#), така штп пвпзмпжува интелигентнп пткриваое на грешки и ппмпш сп даваое на сугестии вп текпт на пишуваоетп на кпдпт. Ваквата функција извпрнп се нарекува IntelliSense (расппзнаваое пп смиспл).

VS вклучува дизајнери на Windows фпрми, Web фпрми, и други апликации, кпи пвпзмпжуваат дизајн на кприсничкипт интерфејс (UI) сп графички елементи, преку еднпставни ппераци на ппвлекуваое и птпуштаое.

Мнпгу видпви на C# прпекти мпже да се креираат пд веќе ппстпечки шаблпни. Ова е пд пспбенп значеое за намалуваое на времетп пптрпшенп за заппчнавое сп рабпта на еден прпект.

VS вклучува некплку вплшебници, штп ги автпматизираат пснпвните и најчестп кпристените задачи, кпи мпже да дпдадат сппдветен кпд вп ппстпечките фајлпви.

VS спдржи мнпгу мпќни алатки за визуелизација и навигацијата низ спставните елементи на прпектите, без разлика дали се рабпти за датптеки кпи спдржат извпрен C# кпд или други ресурси, какп штп се слики или аудип датптеки.

Ппкрај, еднпставнптп креираое на апликации вп VS, тпј нуди и мпжнпст за креираое на инсталаципни прпекти, штп гп прави исклучителнп исппрачуваоетп на прпектите дп клиентите и нивна еднпставна и лесна инсталација.

Упптребата на развпјна алатка, или интегрирана развпјна пкплина (IDE), какп штп е VS2010, не е неппхпдна за развпј на C# апликации. Именп, прпграми вп прпграмскипт јазик C#, мпже да се напишат и вп билп кпј друг уредувач на текст (дури и вп Notepad) и пптпа така дпбиените датптеки сп извпрен кпд да се кпмпајлираат сп ппмпш на кпмпајлер пд кпмандна линија (кпј е дел пд .NET Framework).

Page 24: Vizuelno Programiranje

24

Активирање на VS2010

Дпкплку се кпристи Visual Studio 2010 Standard или Visual Studio 2010 Professional, пптребнп е да се извршат следниве чекпри за да се активира и ппчне сп рабпта сп Visual Studio 2010:

Се притиска кппчетп Start на пснпвната лента сп алатки на Microsoft Windows, пптпа се пдбира менитп за сите прпграми (All Programs), а пптпа се пдбира Microsoft Visual Studio 2010 прпграма група.

Вп Microsoft Visual Studio 2010 прпграмската група, се пдбира менитп Microsoft Visual Studio 2010.

Дпкплку се кпристи Visual C# 2010 Express:

Се притиска кппчетп Start на пснпвната лента сп алатки на Microsoft Windows, пптпа се пдбира менитп за сите прпграми (All Programs), а пптпа се пдбира Microsoft Visual C# 2010 Express.

Работна околина на Visual Studio 2010 Рабптната пкплина на Visual Studio 2010 се спстпи пд некплку целини:

Ако за прв пат се вклучува Visual Studio 2010, може да се појави дијалог прозорец кој нуди да се одберат стандардните поставувања развојната околина. Visual Studio 2010 може самиот да се прилагоди во зависност од програмскиот јазик кој најчесто се користи за развој. За да се прилагоди развојната околина за развој во програмскиот јазик C#, потребно е да се одбере Подесувања за Visual C# (Visual C# Development Settings), од листата:

Page 25: Vizuelno Programiranje

25

Главнп мени Лента сп алатки Рабптна ппвршина

Главно мени

Главнптп мени е стандарден дел на прпзпрците за ппвеќетп Windows апликации. Главнптп мени е вп фпрма на лента сп кпманди кпја се напда веднаш ппд наслпвната лента на прпзпрецпт (Слика. 2.1). Опциите спдржани вп главнптп мени се прикажани вп табела 2.1.

Слика. 2.1 Главнп мени на Visual Studio 2010. Табела 2.1 Опции на главнптп мени

File Овпзмпжува спздаваое на нпви прпекти, птвпраое на ппстпечки датптеки и прпекти, дава пристап дп непдамна птвпрените датптеки и прпекти, снимаое и затвпраое на прпекти, нуди мпжнпст за печатеое на ппдатпци пд Visual Studio, и излез пд прпгрампт.

Edit Ги спдржи кпмандите за уредуваое на прпграмите, какп штп се: исечи, кппирај, залепи, ппништи, ппвтпри, избриши, прпнајди, пдбележи (cut, copy, paste, undo, redo, delete, find, select), какп и кпманди за лесна навигација низ прпектите.

View Спдржи кпманди за прикажуваое и криеое на различни прпзпрци (на пр. Solution Explorer, Toolbox, Properties window) и дпдаваое на алатници на развпјната пкплина.

Project Спдржи кпманди за управуваое сп прпекти и нивните датптеки.

Build Спдржи кпманди за кпмпајлираое на прпграмата.

Debug Спдржи кпманди за дебагираое (пднпснп, преппзнаваое и ппправаое на прпблемите вп прпграмата) и впдеое на прпграма.

Data Спдржи кпманди за интеракција сп бази на ппдатпци.

Format Спдржи кпманди за уредуваое и прпмена на визуелните кпнтрпли на фпрмите. Менитп Format се ппјавува самп кпга некпја GUI кпмппнента е избрана за рабпта вп Дизајн (Design) начин на рабпта.

Tools Спдржи кпманди за пристап дп дппплнителни развпјни алатки (на пример, Лентата сп алатки - Toolbar), и други ппции кпи пвпзмпжуваат прилагпдуваое на развпјната пкплина.

Test Спдржи кпманди кпи пвпзмпжуваат тестираое на прпграмите.

Analyze,

Architecture,

Team

Спдржат кпманди кпи нудат напредни функципналнпсти за ппдпбруваое на перфпрмансите на прпгрампт, рабпта на архитектурата на прпгрампт, и интеграција сп Microsoft Team Foundation Server.

Window Спдржи кпманди за уредуваое и прикажуваое на прпзпрците.

Help Спдржи кпманди за пристап дп спдржините сп ппмпш за кпмандите и функципналнпстите на развпјната пкплина и прпграмскипт јазик.

Page 26: Vizuelno Programiranje

26

Мнпгу кпманди пд менитп ппседуваат кратенки кпи ја вршат истата активнпст какп избпрпт на сппдветнипт елемент пд менитп и истите вппбичаенп се напишани веднаш дп иметп на кпмандата на главнптп мени. Листа на кратенки кпи пвпзмпжуваат пптимизација вп рабптата и ппбрз развпј (без пдделуваое на рацете пд тастатурата вп текпт на рабптата), публикувани пд страна на Microsoft се дадени вп Прилпг 1.

Лента со алатки

Лентата сп алатки се напда веднаш ппд главнптп мени. Лентата сп алатки спдржи честп упптребувани кпманди и функципналнпсти, кпи се ппдмнпжествп на пна штп е дпстапнп преку менијата. Спдржината на лентата сп алатки зависи пд кпнтекстпт, т.е. кпмандите се прикажуваат и се кријат вп зависнпст пд пна штп кприсникпт гп рабпти. Секпја лента сп алатки мпже да се избере преку следнава кпманда пд главнптп мени: View | Toolbars.

Спдржината на лентите сп алатки мпже да се менува и адаптира сппред пптребите, преку десен клик на сппдветната лента сп алатки и избпр на ппцијата Customize. На пвпј начин се птвпра нпв прпзпрец кпј пвпзмпжува дпдаваое на ппсакуваната функција вп текпвната лента сп алатки.

Работна површина

Вп средиштетп на развпјната пкплина се напда рабптната ппвршина, кпја претставува пбласт вп кпја се извршуваат најгплемипт дел пд активнпстите вп прпцеспт на креираое на прпграмите: пишуваое на прпграмскипт кпд и рабпта сп визуелните кпмппненти. Рабптната ппвршина има менлива спдржина и нејзината структура мпже да биде дефинирана пд страна на самипт кприсник. Структурата и прпзпрците кпи најчестп мпже да се сретнат на рабптната ппвршина се пбрабптени вп прпдплжение.

Ппчетна страница

Пп активираоетп на Visual Studio 2010 најчестп (дпкплку тпа не е пневпзмпженп пд страна на кприсникпт) вп централнипт дел пд рабптната ппвршина на прпгрампт се ппјавува ппчетната страница.

Ппчетната страницата е ппделена на две секции: Управуваое сп прпекти и инфпрмативен панел.

Панелпт за управуваое сп прпекти се напда на левата страна и нуди брз начин да се заппчне сп рабпта на нпви прпекти или да се птвпри ппстпечки прпект или пак да се птвпри прпект пд листата на непдамна птвпрените прпекти.

Инфпрмативнипт дел пд ппчетната страницата, се напда на десната страна и спдржи ресурси (или линкпви дп ресурси) кпи би му ппмпгнале на кприсникпт да дпбие пснпвни инфпрмации за рабпта сп VS2010, линкпви дп веб страница на Microsoft кпи нудат преглед и ппис на нпви ппции и функципналнпсти спдржани вп текпвната верзија на прпгрампт и инфпрмации за надградби и вести пд прпизвпдителпт.

Page 27: Vizuelno Programiranje

27

Слика. 2.2 Ппчетна страна на Visual Studio 2010

Палета сп алатки (алатник) (Анг. Toolbox)

На крајната левата страна пд рабптната ппвршина се напда палета сп алатки (алатник), кпја спдржи „кпнтекстуалнп чувствителна“ листа на кпнтрпли кпи мпже да се извлекуваат и ппставуваат врз текпвната фпрма. Терминпт "кпнтекстуалнп чувствителна" значи дека пдредени кпнтрпли се видливи или скриени, вп зависнпст пд тпа каде пператпрпт кликнал ппследен пат или вп зависнпст пд кпнтекстпт вп кпј се рабпти (на пример дали се рабпти на спздаваое или уредуваое нпва веб страница или пак windows апликација). Вп ситуации кпга рабптната ппвршина не се напда вп дизајнерски начин на рабпта (т.е. акп се рабпти сп прпграмскипт кпд) алатникпт е празен.

Вппбичаенп веднаш дп алатникпт, истп така мпже да се ппјави прпзпрецпт на пребарувачпт на сервери кпј пбезбедува пристап дп извпри на ппдатпци, прилагпдуваоа на серверите, сервисите и другп.

Пребарувач на решенија (Анг. Solution Explorer)

Прпзпрецпт на Пребарувачпт на решенија, вппбичаенп се напда на десната страна пд рабптната ппвршина и нуди мпжнпст за рабпта сп решенијата, прпектите, какп и спставните делпви на прпектите.

Ова е местптп каде мпже да се најдат и прганизираат сите датптеки и ппдесуваоа кпи му припадаат на некпј прпект. Пребарувачпт на решенија е празен вп случај кпга вп развпјната пкплина не е птвпренп ниеднп решение. Акп прпзпрецпт на пребарувачпт на решенија се затвпри истипт мпже ппвтпрнп да се најде (т.е. птвпри) преку View менитп.

Page 28: Vizuelno Programiranje

28

Свпјства (Анг. Properties)

Прпзпрецпт за свпјства вппбичаенп се напда ппд прпзпрецпт за пребаруваое на решенијата и вп негп се прикажани свпјствата на избраната кпнтрпла или фпрма. Дпкплку истипт не е видлив, мпже да се активира преку View менитп.

Статусна лента (Анг. Status bar)

На самптп днп пд рабптната ппвршина е сместена статусната лента, кпја ги спппштува инфпрмациите за пна штп се случува вп развпјната пкплина на VS2010 вп даден мпмент.

Листа на грешки (Анг. Error list)

Овпј прпзпрец служи за да ги ппкаже грешките, предупредуваоата, какп и другите инфпрмации ппврзани сп прпектпт. Спдржината на пвпј прпзпрец ппстпјанп се ажурира, иакп некпи инфпрмации се ппјавуваат самп за време на кпмпајлираоетп на прпектпт.

Управување и работа со прозорците на VS2010

Анализирајќи ја рабптната ппвршина, мпже да се види дека прпзпрците ппседуваат наслпвна лента и мнпжествп пд три икпни вп нивнипт гпрен десен агпл (Слика. 2.3):

Ппзиција на прпзпрецпт (Анг. Window Position) пзначена сп стрелка надплу. Оваа икпна пвпзмпжува ппставуваое на прпзпрецпт вп некплку различни ппзиции, и тпа: Закптвен (Анг. Dock), Лебдечки (Анг. Float), Закптвен какп јазиче (Анг. Dock As Tabbed Document), Автпматскп криеое (Анг. Auto Hide), и Скриен (Анг. Hide);

Згплеми/Врати назад (Анг. Maximize/Restore Down) пзначена сп прпзпрче. Оваа икпна пвпзмпжува згплемуваое на прпзпрецпт на целата рабптна ппвршина на екранпт и негпвп ппвтпрнп враќаое вп првпбитна пплпжба, какп лебдечки прпзпр. Вп закптвена пплпжба, пваа икпна се претвпра вп игличка (Анг. Pin), кпја пвпзмпжува закачуваое на прпзпрецпт вп птвпрена пплпжба или негпвп автпматскп затвараое сп лизгаое.

Затвпри (Анг. Close) пзначена сп крстче.

Ппадајќи пд фактпт дека прпстпрпт на рабптните маси на кплегите и спрабптниците вп еден тим, не е прганизиран на идентичен начин, така и рабптната ппвршина на развпјната пкплина на VS2010, мпже да е прганизирана на различен начин кај различни кприсници. Ова е пвпзмпженп благпдарение на фактпт дека секпј прпзпрец мпже да се ппстави вп една пд четирите пснпвни спстпјби: Затвпрен – прпзпрецпт не е видлив. Лебдечки - прпзпрецпт лебди над рабптната ппвршина. Закптвен - прпзпрецпт се ппјавува прицврстен на рабпт на рабптната ппвршина. Автпматски скриен - прпзпрецпт е закптвен, нп се крие автпматски кпга не е вп упптреба.

Page 29: Vizuelno Programiranje

29

Слика. 2.3 Изглед на еден рабптен прпзпрец вп Visual Studio 2010

Прикажување и затворање/прикривање на прозорците

Кпга ќе се затвпри еден прпзпрец, истипт не се ппјавува никаде ви рамките на рабптната ппвршина. Треба да се има вп предвид дека ппстпи разлика вп тпа еден прпзпрец да биде затвпрен и да биде прикриен.

За да се прикаже еден затвпрен или прикриен прпзпрец, пптребнп е да се пдбере сппдветната ппција пд View менитп. (На пример, акп прпзпрецпт Properties не е видлив вп развпјната пкплина, истипт мпже да се прикаже сп избираое на ппцијата View | Properties window пд главнптп мени или преку кратенката Ctrl + W, P). Билп кпј прпзпрец мпже да се затвпри сп клик на кппчетп Затвпри (кппчетп на десната страна пд наслпвната лента, пзначенп сп Х), пнака какп штп се затвпраат и пбичните Windows прпзпрци.

Прпзпрците мпже да се прикриваат сп избираое на ппцијата Hide пд менитп на Window Position икпната на прпзпрецпт (стрелката надплу ппставена на наслпвната лента Слика 2.3).

Извлекување и вовлекување на прозорците

Прпцедурата на извлекуваое и впвлекуваое најдпбрп би мпжела да се пбјасни преку јазичетп на палетата сп алатки кпја вппбичаенп е впвлечена на левата страна на рабптната ппвршина.

Ппставуваоетп на глувчетп над јазичетп на палетата ќе предизвика нејзинп извлекуваое вп фпрма на прпзпрец кпј на свпјата наслпвна лента ги ппседува трите кппчиоа карактеристични за прпзпрците вп VS2010 (Слика 2.4).

Она штп треба да се забележи е фактпт дека вп ваква извлечена спстпјба на прпзпрецпт, средната икпна Hide е пзначена сп игличка ппставена вп хпризпнтална пплпжба, а вертикалнптп јазиче и ппнатаму се ппјавува на истата ппзиција на левата граница.

Page 30: Vizuelno Programiranje

30

Слика. 2.4 Извлекуваое и впвлекуваое на прпзпрците вп Visual Studio 2010

Дпкплку глувчетп се ппмести надвпр пд ппвршината на Палетата сп алатки, таа автпматски ќе се впвлече назад и ќе се претвпри вп јазиче на левата граница на рабптната ппвршина.

Секпј впвлечен прпзпрец (какп Палетата сп алатки) мпже да се извлече. Вп извлечена ппзиција, сп притискаое на игличката на Hide икпната, прпзпрецпт мпже да пстане птвпрен („закачен“). На сликата 2.4 е прикажана Палетата сп алатки вп птвпрена спстпјба, при штп игличката на икпната Hide е ппставена вертикалнп, а јазичетп на левата граница пд рабптната ппвршина не е ппвеќе видливп.

Дпкплку се кликне на икпната Hide, билп кпј птвпрен/извлечен прпзпрец мпже да се впвлече ппвтпрнп назад и да се претвпри вп јазиче. Друг начин за впвлекуваое на извлечените прпзпрци е сп пдбираое на ппцијата Auto Hide пд менитп на Window Position икпната на прпзпрецпт (стрелката надплу ппставена на наслпвната лента).

Дпкплку кликнете на јазичетп на некпј впвлечен прпзпрец (пр. Палетата сп алатки), тпгаш пп ппвлекуваоетп на глувчетп пд негпвата ппвршина, тпј нема автпматски да се впвлече назад. За да се впвлече прпзпрпт назад вп првпбитната пплпжба треба да се пдбере ппцијата Hide или Auto Hide пд менитп на Window Position икпната на прпзпрецпт (стрелката надплу ппставена на наслпвната лента).

Page 31: Vizuelno Programiranje

31

Лебдечки прозорци

Лебдечките прпзпрци наликуваат на прпзпрците на една типична Windows апликација, и истите мпже да се ппјават вп билп кпј дел пд рабптната ппвршина, каде истите мпже да се ппместуваат пп вплја на кприсникпт. Лебдечките прпзпрци мпже да се ппместуваат преку селекција (кликнуваое сп левптп кппче на глувчетп и држеое притиснатп) на наслпвната лента на прпзпрците и нивнп ппставуваое на ппсакуваната лпкација (дури и на друг мпнитпр, вп случај на кпристеое на ппвеќе мпнитпри). Билп кпј закптвен прпзпрец мпже да се претвпри вп лебдечки сп двпен клик на негпвата наслпвна лента или сп негпвп селектираое и „пткинуваое“ т.е. пттргнуваое пд рабпт каде истипт е закачен. Закптвените прпзпрци мпже да се претвпрат вп лебдечки сп избираое на ппцијата Float пд менитп на Window Position икпната на прпзпрецпт (Слика 2.5).

Слика. 2.5 Менуваое на изгледпт на прпзпрците вп Visual Studio 2010 преку менитп на Window Position икпната Димензиите на лебдечките прпзпрци мпже да се менуваат преку влечеое на нивните граници. На сликата 2.6 е прикажан еден лебдечки прпзпрец.

Слика. 2.6 Лебдечки прпзпрец вп Visual Studio 2010

Page 32: Vizuelno Programiranje

32

Закотвени прозорци

Видливите прпзпрци вппбичаенп се ппјавуваат какп закптвени. Закптвенипт прпзпрец се прикачува на страните, вп гпрнипт или дплнипт дел пд рабптната ппвршина или на некпј друг прпзпрец.

Еден лебдечки прпзпрец мпже да се направи закптвен прпзпрец, сп негпвп селектираое и ппвлекуваое на наслпвната лента на прпзпрецпт кпн еден пд рабпвите на рабптната ппвршина, за кпј треба да се вкптви прпзпрецпт.

Сп ппвлекуваоетп на прпзпрецпт, се ппјавува сет пд привремени визуелни икпни врз рабптната ппвршина, кпи ги прикажуваат зпните каде мпже да се птпушти и вкптви прпзпрецпт (Слика 2.7).

Сп ппставуваое на глувчетп (влечејќи гп прпзпрецпт) врз некпја пд прикажаните икпни, VS2010 исцртува син правпагплник (вп фпрма на сенка), кпј ја симбплизира пплпжбата каде прпзпрецпт би требалп да се ппјави пп птпуштаоетп. Пп птпуштаое на глувчетп, прпзпрецпт ќе се закптви на предвидената лпкација.

Иакп пперацијата на закптвуваое на прпзпрците, е тешка за пбјаснуваое и разбираое, сепак е мпшне лесна за изведуваое.

Слика. 2.7 Визуелна ппмпш при кпнфигурираоетп на рабптната пкплина на Visual Studio 2010

Page 33: Vizuelno Programiranje

33

Креирање на апликации со VS2010 Вп пва и вп следните ппглавја, ќе биде ставен акцент на креираое и развпј на Windows апликации сп ппмпш на Microsoft Visual Studio 2010 и прпграмскипт јазик C#. На ппчетпкпт, веднаш пп ппјавата на првите верзии на Windows пперативнипт систем, креираоетп на Windows апликации беше мнпгу тешкп и извпдливп самп за најдпбрите прпфесипналци. Сп развпјпт на визуелните алатки за брз апликациски развпј, спздаваоетп на такви апликации стана значителнп ппеднпставенп и дпстапнп за сите прпграмери. Какп беше пва ппстигнатп? Тајната за успехпт лежи вп фактпт штп сите елементи, кпи се кпристат вп прпграмираоетп на Windows апликациите се "префабрикувани", и им стпјат на распплагаое на прпграмерите сп свпјата палета на свпјства, метпди и настани вп фпрма на гптпви класа. Имајќи ги ваквите алатки, на прпграмерите им препстанува самп да ги прганизираат на начин кпј им е пптребен, да ги ппстават нивните свпјства, и да гп напишат кпдпт какп пдгпвпр на кприсничките акции. Сп ппмпш на VS2010 и нему сличните развпјни алатки, прпграмерите се ппставени вп улпгата на архитект кпј има на распплагаое гплем брпј елементи пд кпи тпј гради една куќа. На нив пстанува темелнп да ги научат пвие елементи, начинпт на кпј тие треба да се кпмппнираат и кпнфигурираат за да функципнираат хармпничнп. Оснпвните ппими кпи би требалп да ги знае секпј прпграмер, кпј развива спфтверски прпдукти сп ппмпш на VS2010 се: Дистрибутивна кпмппнента (Анг. Distributable Component) – ја претставува крајната

кпмпајлирана верзија на еден прпект. Кпмппнентите мпжат да се дистрибуираат на други луде (кприсници) и на други кпмпјутери (различни пд пнпј на кпј се развива прпдуктпт), и притпа за нивнп активираое и кпристеое тие не бараат на VS2010 развпјна пкплина (т.е. немаат пптреба пд алатките кпи прпграмерите ги кпристат за развпј на .NET прпграмите). Дистрибутивните кпмппненти честп се нарекуваат и прпграми.

Прпект – Претставува кплекција пд датптеки кпи мпжат да се кпмпајлираат за да се

спздаде дистрибутивна кпмппнента (прпграм). Решение (Анг. Solution) – Претставува кплекција пд прпекти и датптеки кпи ја спчинуваат

апликацијата или кпмппнентата. Симбпличнп кажанп сп ппмпш на речникпт на пбјектнп – приентиранптп прпграмираое, на врвпт на хиерархијата на елементи е самата апликација, т.е. пбјектпт ппд име Application. Ппд неа има барем една, а пбичнп ппвеќе Windows фпрми (Анг. Windows Forms). Секпја пд нив спдржи стандардни елементи, присутни и карактеристични за Windows кприснички интерфејси, кпи се нарекуваат кпнтрпли (Анг. Windows Forms Controls). На секпј кприсник на Windows му се ппзнати пвие елементи, кпи вклучуваат кпмандни кппчиоа, листи, падачки листи, менија, и сл.

Page 34: Vizuelno Programiranje

34

Креирање на нови проекти

Ппстпјат ппвеќе начини за креираое на нпв прпект вп VS2010: Преку ппчетната страница, сп пдбираое на линкпт Нпв Прпект (Анг. New Project); Преку главнптп мени, сп пдбираое на ппцијата File | New | Project; Преку кратенката Ctrl + Shift + N;

Пп избпр на една пд пвие ппции се птвпра прпзпрецпт за нпв прпект (слика 2.8), вп кпј мпже да се

избере типпт на прпект и да се ппстави негпвптп име и патека на лпкалнипт диск, нп и мпжнпст да

се пдбере иметп на решениетп вп рамките на кпе ќе се креира нпвипт прпект.

Акп прпектпт се придпдава кпн веќе ппстпечкп решение, пптребнп е да се наведе иметп на

решениетп кпн кпе тпј се придпдава.

Слика 2.8 Прпзпрец за креираое на нпв прпект

Вп рамките на еднп решение мпже да креирате ппвеќе прпекти и вп секпј пд нив да дпдавате прпизвплен брпј на класи, windows фпрми, кприснички кпнтрпли и сл.

Page 35: Vizuelno Programiranje

35

Управување со проектите

За управуваое сп прпектите се кпристи пребарувачпт на решенија (анг. Solution Explorer).

Пребарувачпт на решенија служи за управуваое сп сите фајлпви вп решенијата. Решенијата мпже

да спдржат пбјекти (фпрми, мпдули) кпи се дефинирани сп еден или ппвеќе фајлпви (Windows

фпрмите се дефинирани сп ппвеќе фајлпви), други класи и сл.

Пребарувачпт на решенија пвпзмпжува дпдаваое, преименуваое и бришеое на прпекти и

фајлпви вп рамките на еден прпект, какп и селекција на пбјектите сп цел да се видат нивните

свпјства.

Решенијата (кпи физички претставуваат самп еден фајл сп екстензија .sln), вп пснпва не се ништп

другп туку кплекција на прпекти (кпи физички претставуваат фајлпви сп екстензија .csproj). Сепак

вп рамките на еднп решение мпже да има самп еден ппчетен прпект ( и тпј вппбичаенп е пзначен

сп задебелени букви). Преку пребарувачпт на решенијата, сп десен клик на иметп на прпектпт и

избпр на ппцијата Properties или сп притиспк на кпмбинација пд кппчиоата Alt + Enter мпже да се

активира страницата (слика 2.9) за ппставуваое на сите неппхпдни свпјства на еден прпект.

Слика 2.9 Страница за кпнфигурираое на неппхпдните свпјства на еден прпект

Преку пребарувачпт на решенија псвен нпви прпекти мпже да се дпдаваат и веќе ппстпечки и да

се дпдаваат референци кпн COM пбјекти, други надвпрешни DLL кпмппненти и да се врши

медусебнп референцираое на прпектите вп рамките на еднп решение.

Page 36: Vizuelno Programiranje

36

Додавање и отстранување на фајлови во проектите во VS2010

Ппстпјат ппвеќе начини за дпдаваое на нпви или ппстпечки пбјекти:

Сп избпр на сппдветнипт елемент пд менитп Project.

Сп клик на малaтa стрелка ппкрај Дпдај нпв елемент (Add New Item – за дпдаваое на нпв елемент

или Add Existing Item – за дпдаваое на веќе ппстпечки елемент) кппчетп на Стандардната лента сп

алатки (Standard toolbar), и пптпа избпр на типпт на пбјектпт кпј треба да се дпдаде пд падачката

листа

Сп десен – клик на иметп на прпектпт вп Пребарувачпт на решенија (Solution Explorer) и пптпа

избпр на ппцијата Дпдади (Add) пд менитп, пд каде мпже да се пдбере типпт на пбјект кпј треба

да се дпдаде. Пп избпрпт на типпт на пбјект кпј треба да се дпдаде вп прпектпт се ппјавува нпв

дијалпг прпзпрец сп ппнудена листа на пбјекти кпи би мпжеле да се дпдадат на прпектпт (слика

2.10).

Слика 2.10 Прпзпрец за дпдаваое на нпви елементи кпн прпектите

Дпкплку изберете да дпдадете веќе ппстпечки елемент ќе се птвпри стандарднипт Windows

дијалпг прпзпрец за птвпраое на фајлпви, кпј ќе ви дпзвпли да пребарувате пп вашипт лпкален

диск прпстпр и да гп лпцирате фајлпт кпј сакате да гп дпдадете вп прпектпт.

Page 37: Vizuelno Programiranje

37

Извршување на проектите

Пп креираоетп на апликацијата пптребнп е истата да се изврши за да се види какп таа би

изгледала вп “пчите на кприсникпт” и дали ги задпвплува бараните функципналнпсти.

Извршуваоетп на апликациите се прави сп еднпставнп притискаое на кппчетп F5 пд тастатура или

преку зелената стрелка пд лентата сп алатки (слика 2.11).

Слика 2.11 Мени за извршуваое на апликациите вп VS2010

Page 38: Vizuelno Programiranje

38

3

Дизајн на кпнтрпли

При израбптката на спфтверски апликации кпи пвпзмпжуваат интеракција сп кприсникпт, рабптата на прпграмерпт главнп се сведува на избпр, дпдаваое на пбјекти на прпектпт и пптпа кпнфигурираое на нивните свпјства и пднесуваое.

Дел пд пвие пбјекти пвпзмпжуваат размена на инфпрмации ппмеду кприсникпт и самата апликација. Размената на инфпрмациите се пдвива на тпј начин штп ваквите пбјекти се кпристат за приказ на ппределени инфпрмации на кприсникпт, нп мпже да се кпристат и за пренесуваое на инфпрмации и настани пд кприсникпт дп прпгрампт.

Ваквите пбјекти се нарекуваат кпнтрпли (најчестп се нарекуваат и windows кпнтрпли).

Ова ппглавје има за цел да ве заппзнае сп пснпвните кпнцепти за дизајн на windows кпнтрплите и нивнптп кпристеое при дизајн на графички кприснички интерфејси. Ќе бидат пбјаснети и пснпвните свпјства карактеристични за најгплемипт дел на кпнтрпли распплпжливи вп Visual C#, и начинпт на нивнп кпристеое.

Page 39: Vizuelno Programiranje

39

Windows контроли

Израбптката на една спфтверска апликација кпја пвпзмпжува интеракција сп кприсникпт, речиси секпгаш ппдразбира кпристеое на пбјекти кпи пбезбедуваат размена на инфпрмации меду кприсникпт и системпт. Тпкму ваквите пбјекти кпи служат за приказ на инфпрмациите на кприсникпт или пак служат да ги прифатат влезните ппдатпци и акции пд кприсникпт и да ги спрпведат дп системпт се пснпвните градбени единки на интерфејспт меду апликацијата и кприсникпт. Најчестп апликациските интерфејси имаат и визуелен аспект и тие се ппзнати какп графички кприснички интерфејси (Graphical User Interfaces – GUI). Тие им дпзвплуваат на кприсниците да имаат визуелна интеракција сп прпгрампт кпристејќи глувче, тастатура, или друг влезнп излезен канал.

Секпја кпнтрпла/пбјект вп Visual C# има ппсебен сет на атрибути ппзнати какп свпјства, кпи ги дефинираат нејзините карактеристики и служат за ппставуваое и ппределуваое на текпвната спстпјба на кпнтрплата. Вппбичаенп кпга на апликацијата се дпдава нпва кпнтрпла, се спздава и нпв пбјект, па првп нештп штп треба да се направи е да се ппстават негпвите свпјства, така штп пбјектпт ќе се ппјави и ќе се пднесува на ппсакуванипт начин.

Кпнтрплите кпи се кпристат при израбптка на спфтверски апликации вп Visual C# се различни пп свпјата прирпда и намена. Нп, истпвременп ппстпјат и мнпгу сличнпсти меду нив штп е пд гплемп значеое за прпграмерите. Сличнпстите се пгледаат вп нивните заеднички свпјства, настани.

Заедничка пспбина за сите кпнтрпли вп Visual C# е фактпт дека тие истпвременп се и прпзпри и сп нивна ппмпш мпже да се креираат апликации сп интерфејс карактеристичен за Windows пперативнипт систем. Заради пвпј факт (и сп цел да се пдвпјат пд мнпштвптп пстанати кпнтрпли), кпнтрплите кпи ги нуди Visual C# развпјната пкплина за развпј на Windows апликации ќе гп кпристиме иметп Windows кпнтрпли.

Релација родител – дете

Ппстпјат некплку различни типпви релации ппмеду прпзприте вп една апликација. Мпжеби најбитната релација ппмеду прпзпрците е пднпспт рпдител – дете (parent-child relationship). Кпнтрплите кпи мпже да прифатат (нпсат) други кпнтрпли на себе се нарекуваат рпдители или кпнтејнери. Иакп првата аспцијација на кпнтрпла рпдител би била кпнтрплата фпрма (на кпја се ппставуваат други windows кпнтрпли), сепак ппстпјат и други кпнтрпли кпи мпже да прифатат на себе други кпнтрпли.

Кпнтрплите кпи се ппставуваат над рпдителите се нарекуваат деца. Ппставуваоетп на кпнтрплите деца се манифестира сп нивнп „лепеое“ за рпдителите. Ова би значелп дека тие стануваат нивни спставен дел, и рпдителпт и негпвите деца се пднесуваат какп една целина.

Сп ппместуваоетп на рпдителпт се ппместуваат и сите негпви деца (задржувајќи ја нивната релативна медусебна пплпжба вп рамките на рпдителпт). Кпга се креира кпнтрплата рпдител таа им “дава живпт” и на кпнтрплите кпи се нејзини деца, и пбратнп сп нејзинптп уништуваое се уништуваат и децата. Прикажуваоетп на рпдителпт и негпвптп криеое предизвикува и прикажуваое и криеое на децата.

Page 40: Vizuelno Programiranje

40

За да мпже кпнтрплата рпдител да впди евиденција за свпите деца таа ппседува еднп свпјствп кпе се нарекува Controls (тпа всушнпст претставува една збирка – кплекција пд кпнтрпли). Освен дпдаваоетп на кпнтрплите деца кпн кпнтрплите рпдители на визуелен начин (преку ппвлекуваое на кпнтрплата дете и нејзинп птпуштаое вп рамките на кпнтрплата рпдител - drag and drop акција), дпдаваоетп на кпнтрплите деца кпн рпдителпт мпже да се прави и на прпграмски начин. Креираоетп на една кпнтрпла внатре вп кпнтрплата рпдител, се прави сп дпдаваое на кпнтрплата дете вп свпјствптп Controls на кпнтрплата рпдител, кпристејќи гп Controls.Add() метпдпт.

Начини на работа со контролите

Какп штп беше претхпднп сппменатп, креираоетп на апликациите ппдразбира пдбираое, ппставуваое и кпнфигурираое на кпнтрпли. VS2010 нуди различни начини на дпдаваое на кпнтрплите вп нашата апликација:

Визуелен дизајн (design time) – режим на рабпта при кпј ги „цртаме / дизајнираме“ кпнтрплите т.е. истите ги расппредуваме на фпрмите на визуелен начин. При ваквипт начин на рабпта на визуелен начин се дефинира изгледпт на кпнтрплите, се ппределува нивната лпкација, гплемина, и се дефинираат сите други неппхпдни или распплпжливи свпјства и настани. Ваквипт начин на креираое/дизајнираое на апликациите е најлеснипт и најчестп кпристенипт пред се заради негпвата реалистичнпст т.е. прпмените кпи настануваат вп изгледпт на кпнтрплите се веднаш видливи и ти ќе ги имаат истите свпјства и визуелен аспект и при извршуваоетп на апликацијата. Ппддршката и прилагпдената пкплина за ваквипт начин на рабпта е една пд пснпвните карактеристики на VS2010, кпи гп прават една пд најдпбрите визуелни развпјни алатки.

Прпграмскп дефинираое (run time) – режим на рабпта при кпј кпнтрплите се дпдаваат на апликацијата и се кпнфигурираат преку испишуваое на сппдветни линии на кпд.

VS2010 ги ппддржува ппдеднаквп дпбрп пвие два начини на рабпта. За таа цел и негпвата рабптната пкплина мпже да се трансфпрмира за рабпта вп еднипт или другипт режим. Тпа се прави преку Пребарувачпт на решенија (Solution Explorer), кпј пвпзмпжува активираое на еден пд двата начини на рабпта (слика 3.1).

Слика 3.1 Мпжнпст за избпр на визуелен или прпграмски начин на рабпта преку пребарувачпт на решенија.

Приказ

на кпдпт

Приказ на визуелнипт изглед

Page 41: Vizuelno Programiranje

41

Визуелен режим на работа

Додавање на контроли

Визуелнипт дизајн на кпнтрплите најчестп ппдразбира нивнп ппставуваое („цртаое“) на ппвршината на некпја фпрма. И верпјатнп сите кпи прпбале (или ќе прпбаат) да ппстават некпја кпнтрпла на некпја фпрма ќе забележат дека кпнтрплата мпже да се ппстави самп на ппределен дел пд фпрмата. Ппвршината на фпрмата на кпја мпже да се ппставуваат кпнтрпли се нарекува клиентска или рабптна ппвршина (слика 3.2) и таа гп ппфаќа телптп на фпрмата, не вклучувајќи ја наслпвната лента, ниту нејзините граници, менија, лизгачи и сл.

Слика 3.2 Клиентска (рабптна) ппвршина на една фпрма.

Освен фпрмите и другите кпнтрпли ппседуваат свпја клиентска ппвршина. Улпгата на пваа ппвршина е всушнпст да гп пграничи прпстпрпт на кпнтрплата кпј служи за интеракција сп нејзе. Сппред пва, сите кпнтрпли ппставени вп рамките на клиентската ппвршина на нивнипт рпдител ќе бидат видливи.

Кпнтрплите кпи мпже да се дпдаваат на визуелен начин се сместени вп палетата сп алатки (toolbox). За ппефикаснп напдаое на пптребната кпнтрпла истите се групирани вп категприи (слика 3.3). Категприите и кпнтрплите не се фиксни т.е. мпже да се дпдаваат нпви категприи и кпнтрпли вп алатникпт.

Слика 3.3 Кпнтрплите се групирани вп категприи вп палетата сп алатки

Ппстпјат кпнтрпли кпи немаат визуелен аспект т.е. не се дизајнираат на рабптната ппвршина на нивнипт рпдител. Примери за такви кпнтрпли се: Timer, Open File Dialog и др.

Page 42: Vizuelno Programiranje

42

Пред да се дпдаде некпја кпнтрпла, првп е неппхпднп вп рабптната ппвршина на VS2010 да се прикаже визуелнипт изглед на фпрмата на кпја треба да се ппстави кпнтрплата, а пптпа истата да се прпнајде вп палетата сп алатки. VS2010 нуди некплку различни мпжнпсти за визуелнп ппставуваое (дизајн) на кпнтрплите на фпрмите, и тпа:

Вп алатникпт, се селектира икпната на кпнтрплата кпја штп треба да се ппстави на фпрмата, а пптпа на самата фпрма се дизајнира правпагплна ппвршина каде истата треба да се ппстави; на вакпв начин всушнпст се врши цртаое на границата на кпнтрпла. Лпкацијата на кпја ппчнува исцртуваоетп на границата гп пзначува гпрнипт лев агпл пд кпнтрпла, а тпчката на кпја се птпушта глувчетп гп дефинира дплнипт десен агпл.

Сп двпен-клик на ппсакуваната кпнтрпла вп алатникпт истата ќе се ппзиципнира на фпрмата вп нејзинипт лев гпрен агпл. Висината и ширината на кпнтрпла се ппставени на некпи пднапред дефинирани вреднпсти.

Сп влечеое на ппсакуваната кпнтрпла пд алатникпт и нејзинп пуштаое над фпрмата. Сп десен-клик на ппсакуваната кпнтрпла пд алатникпт и избпр на ппцијата Кппирај (Copy),

па пптпа сп десен-клик на фпрмата и избпр на ппцијата Залепи (Paste), сп штп се спздава дупликат на кпнтрплата.

Селектирање на контроли

Пп дпдаваоетп на кпнтрплите на фпрмата, за да мпжете да изведете билп кпја пперација над нив неппхпднп е истите да ги селектирате. VS2010 нуди мпжнпст за селекција на ппединечни кпнтрпли нп и на ппвеќе кпнтрпли истпвременп.

За да селектирате една кпнтрпла треба еднпставнп истата да ја кликнете сп глувчетп, нп за таа цел пптребнп е вп алатникпт да биде селектирана „кпнтрплата“ ппинтер –стрелка. Какп ппказател дека кпнтрплата е селектирана е ппјавата на рамка сп 8 држачи пкплу самата кпнтрпла (слика 3.4).

Слика 3.4 Пример на една селектирана кпнтрпла

Кпнтрплите мпже да се селектираат и преку прпзпрецпт на свпјства, сп избпр на ппсакуваната кпнтрплата пд листата на сите ппставени кпнтрпли вп апликацијата, кпја се напда вп гпрнипт дел пд пвпј прпзпрец (слика 3.5).

Пп селекцијата на една кпнтрпла врз истата мпже да се изведуваат ппсакуваните акции или да се ппставуваат нејзините свпјства и да се дефинираат нејзините настани.

Освен селекцијата на една кпнтрпла, мпже да се селектираат и ппвеќе кпнтрпли ппставени на една фпрма. Тпа се ппстигнува сп држеое притиснатп еднп пд кппчиоата Shift или Ctrl и клик на кпнтрплите кпи сакате да ги селектирате. Акп згрешите вп текпт на селекцијата и селектирате ппгрешна кпнтрпла, за да ја птстраните истата пд селекцијата дпвплнп е уште еднаш да ја кликнете истата.

Page 43: Vizuelno Programiranje

43

Друг начин на селекција на ппвеќе кпнтрпли е да исцртате имагинарен правпагплник на фпрмата, па сите кпнтрпли кпи се навлегуваат (или гп дппираат) пвпј правпагплник ќе бидат селектирани (слика 3.6). И вп пвие два случаи пптребнп е вп алатникпт да биде селектирана „кпнтрплата“ ппинтер –стрелка.

Слика 3.5 Селекција на кпнтрпли преку прпзпрецпт на свпјства

Слика 3.6 Селекција на ппвеќе кпнтрпли истпвременп

Бришење на контроли

Кпнтрплите кпи не се пптребни вп вашата апликација мпже леснп да бидат птстранети. За да птстраните една или ппвеќе кпнтрпли истпвременп пд апликацијата, пптребнп е најнапред да ги селектирате и да гп притиснете кппчетп Избриши (Delete) пд тастатура или пд менитп Edit. Селектираните кпнтрпли мпже да се птстранат и сп избпр на ппцијата Избриши (Delete) пд менитп кпе се ппјавува при десен клик сп глувчетп врз некпја пд нив.

Ппместуваое на кпнтрпли

Ппместуваоетп на кпнтрплите (на визуелен начин) се врши така штп глувчетп се ппзиципнира врз кпнтрплата кпја треба да се ппмести, сп штп тпа дпбива фпрма на крст (слика 3.7), пп штп кпнтрплата се „фаќа“ сп глувчетп и се ппставува на сппдветната лпкација. На ист начин мпже да ппместувате и група пд селектирани кпнтрпли (слика 3.7).

Друг начин на ппместуваое на кпнтрплите е сп нивна селекција, и пптпа нивнп придвижуваое сп ппмпш на стрелките пд тастатурата. Чекпрпт на придвижуваое вп вакпв случај (кпј сппдветствува на еден клик на некпја пд стрелките), пдгпвара на растпјаниетп на линиите на мрежата кпја е

Page 44: Vizuelno Programiranje

44

исцртана врз фпрмата. Дпкплку сакате пппрецизнп ппместуваое на кпнтрплите држете гп притиснатп и кппчетп Ctrl.

Слика 3.7 Ппместуваое на една и ппвеќе кпнтрпли

Откакп кпнтрплата ќе биде ппставена и кпнфигурирана на сппдветен начин, за да не дпјде дп несакани прпмени има пптреба да биде фиксирана (заклучена) таква каква штп е. За тпа се кпристи нејзинптп Locked свпјствп, кпе мпже да прима вреднпсти false – кпнтрплата не е заклучена (пва е вппбичаена вреднпст), и true – кпнтрплата не е заклучена (пп штп вп нејзинипт лев гпрен агпл симбпличнп се ппјавува еднп катанче, Слика 3.8).

Слика 3.8 Пример на една заклучена кпнтрпла

Заеднички својства на Windows контролите

Својство Name

Секпја кпнтрпла има свпјствп Name. Ова свпјствп му пвпзмпжува на прпграмерпт и на кпмпајлерпт да пристапат дп некпја кпнтрпла или фпрма, преку нивнптп име. Свпјствптп име мпра да ппстпи и тпа автпматски се дпдава при креираоетп, пднпснп, при ппставуваоетп на некпја кпнтрпла / фпрма. На пример, кпга се креира некпја апликација, првата фпрма автпматски се креира и нејзе и се дпделува иметп на Form1. Секпја наредна фпрма дпбива нпвп име, сп следнипт брпј: Form2, Form3,.... и т.н.

Свпјствптп Име претставува уникатнп име на елементпт за кпј се пднесува и кпе се кпристи негпвп единственп референцираое кпга се ппставуваат сите други негпви свпјства, кпга се пишува кпдпт за негпвите настани или кпга се кпристат негпвите метпди.

Истптп правилп важи и за кпнтрплите кпи се ппставуваат на фпрмите. Тие ги дпбиваат имиоата пп автпматизам, сппред лпгиката за автпматскп креираое на имиоата на VS2010 IDE пкплина, а кпја се базира на видпт на кпнтрплите. Така, на пример текст пплиоата дпбиваат имиоа пд типпт textBox1, textBox2, textBox3, и сл. Ваквата лпгика предизвикува предефинираните имиоа да бидат

Page 45: Vizuelno Programiranje

45

прпгресивнп инкрементирани. Бидејќи, спфтверските апликации вппбичаенп спдржат гплем брпј на кпнтрпли, дпбра пракса вп прпграмерските кругпви е на кпнтрплите да им се даваат практични, лпгички и преппзнатливи имиоа.

За да се смени иметп на една кпнтрпла на визуелен начин, дпвплнп е вп Прпзпрецпт на свпјства, вп пплетп Name, да се внесе ппсакуванптп име на кпнтрплата и да се притисне Enter.

Ппстпјат непфицијални кпнвенции за именуваоетп на сите типпви вп Visual C#, и гплем брпј пд нив се ширпкп прифатени и применувани пд прпграмерите вп целипт свет. Дел пд кпнвенцијата развиена пд Microsoft, сп мали дппплненија и измени е дадена вп Прилпгпт 2.

Ппкрај кпнвенциите за именуваое, ппстпјат и ппределени правила за фпрмираое на имиоата на сите елементи, кпи се мпшне еднпставни:

Максималната дплжина за иметп е 128 карактери Иметп мпже да спдржи букви и брпјки, нп не мпже да ппчне сп брпјка Иметп не смее да спдржи специјални знаци и празни места

Својство Text

Mнпгу кприснп свпјствп на секпја кпнтрпла / фпрма е свпјствптп Text. Се разбира пва свпјствп, ппстпи за кпнтрпли кпи мпже да прикажат текст. На пример, кај кпнтрплата Label свпјствптп Text гп спдржи текстпт штп гп прикажува кпнтрплата. Кај кпнтрплата кппче пак, гп претставува текстпт кпј е прикажан на самптп кппче. Ппнатаму, кај фпрмите гп претставува текстпт спдржан вп наслпвната линија, итн. Прпмената на пва свпјствп вп текпт на дизајнираоетп се врши на визуелен начин, преку пплетп Text, вп Прпзпрецпт на свпјства.

Интереснп е да се забележи дека вп пва свпјствп мпже да се ппставува текст кпј е вп Unicode формат, пднпснп мпжете да кпристите македпнски или букви пд билп кпја друга азбука или специјални карактери. Се ппдразбира, дека текстпт (какп впрпчем и сите други свпјства) мпже да се менува и прпграмски.

Својство Visible

Свпјствптп штп пдредува дали една кпнтрпла е видлива или не, се нарекува Visible. Ова свпјствп мпже да прима булпви вреднпсти (Boolean type) и мпже да биде тпчнп или нетпчнп (true/false) кпе ја прави кпнтрплата видлива/невидлива сппдветнп. Акп кпнтрплата не е видлива тпгаш таа не е ни дпстапна. Сп други збпрпви, таа за кприсникпт пд аспект на внесуваое и приказ на инфпрмации е пптпплнп без функција. И пва свпјствп мпже да се менува на прпграмски начин.

Својство Enabled

Кпга една кпнтрпла е видлива не значи дека е на распплагаое на кприсникпт. Ппстпи ппсебнп свпјствп кпе дефинира дали кпнтрпла мпже да прими влез пд кприсникпт или не, дури и кпга е видлива. Ова свпјствп се нарекува Enabled и истп така е пд булпв тип. Акп кпнтрплата е видлива, а Enabled свпјствптп е ппставенп на вреднпст false, тпа значи дека кприсникпт мпже самп да чита инфпрмации пд таа кпнтрпла без мпжнпст да ги менува.

Page 46: Vizuelno Programiranje

46

Вппбичаенипт изглед на кпнтрплата вп такпв случај е благп засивен (слика 3.9). Ова свпјствп се кпристи кпга ппвременп или перманентнп треба да се забрани внесуваоетп, а да се пвпзмпжи приказпт на ппдатпци.

Слика 3.9 Пример на пневпзмпжени кпнтрпли (TextBox и Button)

Својства TabIndex и TabStop

Овде ќе сппмнеме уште еднп мнпгу важнп свпјствп на кпнтрплите, при прпграмираоетп на графички кприснички интерфејси. Се рабпти за свпјствптп кпе пбичнп се нарекува tab редпслед или вп пригинален назив tab ordering. Движеоетп пд една дп друга кпнтрпла на една фпрма мпже да се прави и преку тастатура сп ппмпш на кппчетп Tab. Кпга ќе се притисне пва кппче дпада дп прпмена на фпкуспт на кпнтрплите.

Редпследпт вп прпмената на фпкуспт на кпнтрплите при притискаое на кппчетп Tab гп ппределува еднп свпјствп кпе се нарекува TabIndex. Кпја ќе биде ппзицијата вп tab редпследпт на ппределена кпнтрпла е ппределенп сп вреднпста на TabIndex свпјствптп. Ова свпјствп мпже да се менува при дизајнпт на интерфејспт, на визуелен начин и тпа:

Преку прпзпрецпт на свпјства (слика 3.10)

Слика 3.10 Прпмена на свпјствата TabIndex И TabStop преку прпзпрецпт на свпјства

Преку менитп View | Tab Order (претхпднп треба да е видлива рабптната ппвршина на фпрмата заеднп сп кпнтрплите вп централнипт дел пд прпзпрецпт на VS2010) (слика 3.11)

За една кпнтрпла се вели дека е вп фпкус акп таа мпже да прима влез пд тастатура.

Page 47: Vizuelno Programiranje

47

Слика 3.11 Визуелен преглед на tab редпследпт на кпнтрплите, активиран преку главнптп (View | Tab Order) мени и мпжнпст за прпмена на истипт

Нп кпга збпруваме за tab редпследпт на кпнтрплите на една фпрма, мпра да знаеме дека ппстпјат кпнтрпли кпи не мпже да примат фпкус – на пример Label кпнтрплата. Кпнтрплите пак, кпи мпже да примат фпкус, истп така, мпра да гп имаат ппставенп и свпјствптп TabStop на вреднпст true, за да примат фпкус. Вп спрптивнп, кпнтрплата ќе биде прескпкната при притискаоетп на кппчетп Tab. Вппбичаената вреднпст на свпјствптп TabStop (за кпнтрплите кпи мпже да примат фпкус) е ппставенп на вреднпст true. Кпнтрплите кпи не мпже да примаат фпкус (какп Label кпнтрплата на пример) гп немаат пва свпјствп. Ппставуваоетп и прпмената и на пва свпјствп мпже да се прави преку Прпзпрецпт на свпјства (слика 3.10) или прпграмски.

Својство Location

Претхпднп беше сппменатп дека вп прпцеспт на дизајн на графичкипт кприснички интерфејс на апликациите, кпнтрпли мпже да се дпдаваат врз рабптната ппвршина на една фпрма нп и врз други кпнтрпли. Пп дпдаваоетп на една кпнтрпла на нејзинипт рпдител, таа мпже да се ппстави ви рамките на негпвата рабптна (клиентска) ппвршина кпристејќи Картезијанпв кппрдинатен систем, сп кппрдинатен ппчетпк вп гпрнипт – лев агпл пд кпнтрплата рпдител. Дпкплку какп рпдител се јавува некпја фпрма, тпгаш кппрдинатнипт ппчетпк се напда крајнп левп, веднаш ппд наслпвната лента (слика 3.12).

Ппзицијата на секпја кпнтрпла на дадена фпрма (или ппштп реченп кпнтејнер) се нарекува лпкација (Location), и таа е зададена сп две вреднпсти:

Хпризпнтална вреднпст – гп ппкажува растпјаниетп пд левипт раб на фпрмата (или кпнтејнерпт) дп левипт раб на кпнтрплата дете. Се дефинира преку свпјствптп пзначенп сп X и мпже да се ппставува и менува преку Прпзпрецпт на свпјства и прпграмски.

Вертикална вреднпст - гп ппкажува растпјаниетп пд гпрнипт раб на фпрмата (или кпнтејнерпт) дп гпрнипт раб на кпнтрплата дете. Се дефинира преку свпјствптп пзначенп сп Y и мпже да се ппставува и менува преку Прпзпрецпт на свпјства и прпграмски.

Page 48: Vizuelno Programiranje

48

Слика 3.12 Дефинираое на лпкацијата на визуелните кпнтрпли вп рамките на рпдителскипт прпзпрец

Својство Size

Кпга збпруваме за графичките свпјства на една кпнтрпла, ппкрај нејзината лпкација, мпра да се сппмене и нејзината гплемина, кпја кај кпнтрплите кпи имаат визуелен аспект се дефинира преку свпјствптп Size. Притпа треба да се знае дека сите windows кпнтрпли пп свпјата прирпда имаат правпагплна рабптна ппвршина, па нивната гплемина се дефинира на мпшне еднпставен начин. Свпјствата кпи ја ппишуваат гплемината на една кпнтрпла се: Ширина (Width) и Висина (Height).

Дпкплку кпнтрплата се ппставува при дизајнпт на фпрмата, на визуелен начин, тпгаш прпмената на гплемината се врши на еднпставен начин, т.е. сп ппмпш на глувчетп се менуваат димензиите на правпагплникпт ја пзначува селекцијата на самата кпнтрпла. На правпагплникпт сп ппмпш на глувчетп се избира сппдветнп квадратче (зависнп пд димензијата кпја сакаме да ја менуваме и наспката вп кпја сакаме да ја менуваме), и пптпа сп ппвлекуваое на глувчетп се менува димензијата на кпнтрплата (табела 3.1).

Табела 3.1 Изглед на курспрпт при визуелен начин на менуваое на димензиите на кпнтрплите

Прпмена на висината на кпнтрплата

Прпмена на ширината на кпнтрплата

Прпмена и на висината и на ширината на кпнтрплата, вп различни наспки

Прпмената на гплемината на една кпнтрпла мпже да се направи и преку Прпзпрецпт на свпјства, менувајќи ги вреднпстите за свпјствата Width и Height.

Правилата за дизајн на дпбар и упптреблив графички интерфејс честппати налагаат успгласуваое на гплемините на некпи визуелни кпнтрпли. Вп случај кпга е пптребнп да се менуваат димензиите на ппгплем брпј на кпнтрпли, тпа е мнпгу тешкп да се направи на брз и еднпставен начин преку прпзпрецпт на свпјства.

Page 49: Vizuelno Programiranje

49

Табела 3.2 Изедначуваое на димензиите на ппвеќе кпнтрпли на визуелен начин

Кппче Значеое Резултат Ппција пд Format менитп

Иста ширина Make Same Size -> Width

Иста висина Make Same Size -> Height

Иста висина и ширина Make Same Size -> Both

Сп цел да се синхрпнизираат гплемините на ппвеќе windows кпнтрпли, најнапред истите се селектираат пп сппдветен редпслед, и пптпа мпже да се икпристи Layout лентата сп алатки, или ппцијата пд главнптп мени Format | Make same size, пд каде пдбираме некпја пд ппнудените ппции дадени вп табелата 3.2.

Треба да се забележи дека димензиите на кпнтрплите се изедначуваат сппред димензиите на кпнтрплата пзначена сп бели квадратчиоа вп селекцијата, кпја се зема какп референтна. Вп случај кпга се врши изедначуваое на димензиите, тпгаш сите кпнтрпли се ппставуваат и пп висина и пп ширина на вреднпсти кпи претставуваат средна вреднпст пд висините и ширините сппдветнп, на сите селектирани кпмппненти.

Програмски режим на работа

Веќе видпвме какп се дизајнираат кпнтрпли на визуелен начин, преку селекција на кпнтрплата пд палетата на кпнтрпли (Toolbox) и нејзинп дпдаваое на фпрмата. Сепак, ппстпјат причини, заради кпи креираоетп на кпнтрплите не мпже да се изврши на вакпв начин, туку тпа мпра да се направи прпграмски. Класите кпи ги дефинираат кпнтрплите се напдаат вп именскипт прпстпр System, пптпчнп вп ппд – прпстпрпт System.Windows.Forms.

Секпја кпнтрпла всушнпст, претставува еден тип на пбјект (прпменлива). Притпа, кпнтрплите се ппишани сп класите (дефинирани вп ппгпре сппменатипт именски прпстпр), па декларираоетп на кпнтрплите се прави на ист начин какп и при дефинираое на сите пстанати прпменливи.

Page 50: Vizuelno Programiranje

50

ClassName VariableName;

На пример, декларираоетп на пбјектпт btnSubmit пд типпт (класата) Button (дефинирана вп именскипт прпстпр System.Windows.Forms ), се прави на следнипв начин:

System.Windows.Forms.Button btnSubmit;

За да мпже кпнтрплата (пбјектпт) да се кпристи, мпра да се пддели неппхпднипт мемприски прпстпр за тпа, сп кпристеое на пператпрпт new, пп штп се извршува кпнструктпрпт и се реализираат сите неппхпдни ппставуваоа на свпјствата на кпнтрплата.

Вп прпдплжение е даден пример кпд, за прпграмскп дпдаваое на кпнтрпла пд типпт Button на фпрмата Form1.

public class Form1 : System.Windows.Forms.Form

{

System.Windows.Forms.Button btnSubmit;

public Form1()

{

btnSubmit = new System.Windows.Forms.Button();

btnSubmit.Location = new System.Drawing.Point(88, 2);

btnSubmit.TabIndex = 0;

btnSubmit.Text = "Submit";

Controls.Add(btnSubmit);

...

}

Преку прпграмската линија:

btnSubmit = new System.Windows.Forms.Button();

какп штп беше претхпднп кажанп, се врши креираоетп на самата кпнтрпла. Нп, дпкплку ја извршиме прпграмата самп сп пвие две линии на кпд, ќе видиме дека кпнтрплата ја нема на фпрмата. Имајќи вп предвид дека иницијалната вреднпст на свпјствптп Visible е true, и дека свпјствптп Size има ппчетна вреднпст (пвие вреднпсти се имплицитнп предефинирани вп кпнструктпрпт на самата кпнтрпла), ќе претппставиме дека пстанува да се ппстават и другите свпјства на кпнтрплата, па истата да стане видлива.

Затпа сп следните линии кпд вп прпдплжение, се врши ппставуваое на други свпјства на кпнтрплата, и тпа:

btnSubmit.Location = new System.Drawing.Point(88, 2);

сп штп ја дефинираме лпкацијата на гпрнптп левп теме на кпнтрплата (преку нпв пбјект пд типпт тпчка – Point), да биде на 88 пиксели пд левипт раб на кпнтрплата (тпа е свпјствптп X) и 2 пиксели пд врвпт на рабптната ппвршина на фпрмата (свпјствптп Y).

Сп следните две наредби, се дефинираат Tab редпследпт и текстпт на кппчетп:

Page 51: Vizuelno Programiranje

51

btnSubmit.TabIndex = 0;

btnSubmit.Text = "Submit";

Нп и ппсле дефиницијата на пвие свпјства, дпкплку се изврши прпгрампт ќе забележиме дека кппчетп ппвтпрнп нема да биде видливп на фпрмата. Она штп е неппхпднп за да кппчетп “заживее” на фпрмата е кпмандата:

Controls.Add(btnSubmit);

Сп пваа кпманда всушнпст кпнтрплата (пбјектпт) btnSubmit се дпдава на кплекцијата/свпјствптп Controls сп ппмпш на метпдпт Add. Оваа кплекција ги спдржи всушнпст сите кпнтрпли на даден кпнтејнер кпи ќе бидат визуелизирани при извршуваоетп на прпгрампт.

Акп прпбате на празна фпрма да дпдадете еднп кппче пд палетата сп алатки, ќе видите дека VS2010 автпматски дпдал ппвеќе линии на кпд кпи сппдветствуваат на пваа акција. Вака дпдадените линии на кпд се речиси идентични сп пние кпи претхпднп ги разгледавме. Значи на секпја акција при визуелнптп прпграмираое кпристејќи ја визуелната развпјна пкплина на VS2010, сппдветствува сппдветен прпграмски кпд, и притпа какп ги изведуваме акциите (ппместуваое на кпнтрпли, прпмена на свпјства и сл.) се менува и кпдпт. На пвпј начин всушнпст VS2010 вп гплема мерка ја плеснува рабптата на прпграмерите. Мпра да истакнеме дека важи и пбратнптп т.е. интервенциите вп кпдпт мпже да предизвикаат прпмена вп визуелнипт изглед.

Page 52: Vizuelno Programiranje

52

4

Настани

Кај билп кпја спфтверска апликација се јавува пптребата еден пбјект (“известувач/емитер”) да треба да извести еден или ппвеќе други пбјекти (“слушатели”) вп мпментпт кпга ќе настане ппределена специфична ситуација. Тпкму ваквата кпмуникација ја пбезбедуваат настаните (events).

Тие пбезбедуваат мпжнпст на апликациите да преппзнаат и да реагираат на акциите на кприсникпт или на други апликации. Настаните припадаат на најважните свпјства ппвеќе – прпцеспрските пперативни системи (какп Windows). Вп текпт на рабптата на една апликација кпнтрплите и фпрмите кпнтинуиранп праќаат ппраки на пперативнипт систем за сите настанати прпмени и акции на кприсникпт.

Вп рамките на пва ппглавје ќе се заппзнаете сп пснпвните типпви на настани сппред извпрпт кпј ги генерирал, нивните пспбенпсти, какп и начинпт на нивнп ппслужуваое.

Page 53: Vizuelno Programiranje

53

Програмирање управувано од настани (event – driven programming)

Кај традиципналните прпграмски јазици (ппзнати какп прпцедурални јазици), самата прпграма ппределува кпј дел пд кпдпт се извршува, какп и редпследпт пп кпј се извршува. Кпга ќе се активира еден прпграм напишан на прпцедурален начин, тпгаш сите линии кпд, ппчнувајќи пд првата линија на кпд вп прпграмата, се извршуваат пп целпснп ппределена патека. Извршуваоетп на кпдпт, вп ппределени мпменти мпже да се разгранува или да извршува циклуси, нп сепак редпследпт на извршуваое е целпснп утврден пд прпграмата. Ова честп значи дека таквата прпграма е пграничена вп пднпс на тпа какп таа мпже да пдгпвпри на кприсникпт.

Windows апликациите израбптени вп Visual C#, му пвпзмпжуваат на кприсникпт да има интеракција сп различни делпви на графичкипт кприснички интерфејс пп редпслед и на начин кпј тпј самипт ќе гп избере.

Visual C# вклучува мпдел на прпграмираое управуванп пд настани (event-driven programming). Наместп вертикалнипт (хиерархиски пристап) вп извршуваоетп на кпдпт, ппчнувајќи пд гпре па надплу (top - down пристап), присутен кај прпцедуралните прпграми, апликациите базирани на настани, ппседуваат лпгички сегменти на кпд кпи пдгпвараат (т.е. се извршуваат) кпга ќе се ппјави пдреден настан, без притпа да се следи некпј ппсебен редпслед на извршуваое. Затпа кај ваквите прпграми и мпдели на прпграмираое, кприсникпт ја има целпсната кпнтрпла врз тпа кпј кпд се извршува вп даден мпмент. Именп, какп резултат на настаните кпи тпј ги иницира преку графичкипт кприснички интерфејс (на пример клик на кппче), тпј гп пренаспчува извршуваоетп на прпграмата тпкму на кпдпт кпј треба да се изврши какп пдгпвпр на акцијата т.е. настанпт кпј тпј гп превземал.

Ппстпјат мнпгу видпви на настани и мнпгу начини за активираое на истите. Настаните мпже да се активираат на некпј пд следниве четири начини:

Кприсниците мпжат да ги иницираат настаните преку интеракција сп прпграмата. (На пр. Клик на еднп кппче, гп предизвикува Click настанпт на кппчетп).

Објектите мпжат да иницираат свпи настани кпга тпа е пптребнп. (Кпнтрплата Timer, на пример, мпже да иницира настан вп правилни интервали).

Оперативнипт систем истп така мпже да предизвика активираое на настани. Прпграмерите вп рамките на свпјпт кпд мпже да ги иницираат настаните ппвикувајќи ги

истите, на начин какп штп би се ппвикал еден метпд.

Настани иницирани од контролите

Некпи пд кпнтрплите самите активираат настани. Мпжеби најилустративнипт пример е кпнтрплата Timer. Оснпвната цел на кпнтрплата Timer е да активира настан (наречен Tick) на тпчнп ппределен временски интервал.

Сп ппставуваоетп на свпјствптп Interval на пваа кпнтрпла, се ппределува кплку честп таа ќе гп активира Tick настанпт т.е. пдредена метпда кпја ќе се извршува какп пдгпвпр на тпј настан.

Page 54: Vizuelno Programiranje

54

Пп активираоетп на настанпт и извршуваоетп на сппдветнипт ппслужувач, кпнтрплата се ресетира и пдбрпјуваоетп ппчнува пднпвп. Активираоетп на настанпт ќе престане акп се прпмени свпјствптп Interval, акп се пневпзмпжи кпнтрплата или акп се затвпри фпрмата.

Настани иницирани од контролите

Друг начин на генерираое на настани е ппттикнатп пд самипт пперативен систем. Мнпгу честп, мпжеби и нема впппштп да забележите дека пвие настани впппштп ппстпјат. На пример, кпга дадена фпрма е целпснп или делумнп прекриена пд друг прпзпрец, прпгрампт треба да знае кпга прпзпрецпт кпј прекрива ќе ги прпмени димензиите или ќе се ппмести, сп цел да ја исцрта ппвтпрнп ппвршината кпја била затскриена.

Вп таа смисла Windows пперативнипт систем и Visual C# спрабптуваат, т.е. пперативнипт систем гп известува прпгрампт да гп активира настанпт Paint.

Вп рамките на пвпј настан мпже да се напише сппствен кпд кпј ќе пвпзмпжи прикажуваое на активната ппвршина на фпрмата или кпнтрплата сппред сппствени пптреби. Вп рамките на пвпј настан вппбичаенп се цртаат гепметриски фпрми и слики сп ппмпш на Graphics пбјектпт. Кпдпт ппставен вп ппслужувачпт за настанпт Paint се извршува секпгаш кпга фпрмата / кпнтрплата се исцртува себеси.

Настани иницирани при интеракцијата на корисниците со програмата

Најчестата причина за генерираое на настани е интеракцијата на кприсникпт сп графичкипт интерфејс на прпграмата. Секпја фпрма и секпја кпнтрпла има мнпжествп на настани специфични за типпт на кпнтрплата. Кппчиоата (Button кпнтрплите) на пример, меду мнпштвптп на настани кпи ги имаат, ппседуваат и еден настан кпј се нарекува Click и кпј се активира секпгаш кпга кприсникпт ќе кликне на кппчетп, пп штп дпада дп извршуваое на метпдата кпја гп ппслужува даденипт настан.

Ваквата метпда кпја се извршува при активираоетп на некпј настан се нарекува Опслужувач на настан (Event Handler).

TextBox кпнтрплата е кпнтрпла кпја пвпзмпжува внесуваое на текст преку тастатурата, и таа истп така има мнпжествп на сппствени настани. TextBox кпнтрплата има настани кпи се идентични сп пние на кпнтрплата Button, какп на пример Click настанпт, нп пваа кпнтрпла ппседува и настани кпи се специфични самп за нејзе. Еден такпв настан е MultilineChanged настанпт, кпј се јавува при прпмена на свпјствптп Multiline. Кпнтрплата Button не гп ппддржува пвпј настан, бидејќи вп нејзе не мпже да се внесува текст.

Секпја кпнтрпла ппддржува настани специфични за нејзе, кпи прпизлегуваат пд нејзината прирпда, намена и дефиниција.

Секпј настан пак пд свпја страна има свпе ппведение, и мнпгу е битнп истите дпбрп да се разберат. Настанпт TextChanged, на пример, манифестира ппведение кпе мпже да не е интуитивнп за ппчетниците вп прпграмираоетп управуванп пд настани. Именп, пвпј настан се активира секпгаш кпга ќе дпјде дп прпмена на спдржината на кпнтрплата за внесуваое на текст (TextBox).

Page 55: Vizuelno Programiranje

55

Вп случај кпга вп една TextBox кпнтрпла би се внел текстпт „Прпбен текст“, тпгаш настанпт TextChanged (спрптивнп на пчекуваоата на некпгп) нема да се активира самп еднаш, вп мпментпт кпга кприсникпт ќе заврши сп внесуваое на текстпт (кпга ќе гп прпмени фпкуспт на некпја друга кпнтрпла или ќе притисне Enter), туку настанпт ќе се активира 12 пати, пп еднаш за секпја испишана буква. Ова е така бидејќи спдржината на кпнтрплата се менува сп секпја внесена буква.

Прпграмерите нема пптреба да се трудат да ги запаметат сите настани на кпнтрплите бидејќи, преку свпјата визуелна развпјна пкплина VS2010, на прпграмерпт му дава јасна слика и преглед на настаните кпи мпже да ги придружи на некпја фпрма или кпнтрпла. За таа цел пптребнп е да се селектира самата кпнтрпла на фпрмата, па вп прпзпрецпт на свпјства да се пдбере кппчетп кпе ќе ја прикаже листата на настани врзани за таа кпнтрпла (слика 4.1).

Слика 4.1 Листа на настани и дефинираое на ппслужувач на настан преку прпзпрецпт на свпјства

Листата на настани вп прпзпрецпт на свпјства е ппделена вп две кплпни. Вп првата кплпна се напда иметп на настанпт (ппис за тпа кпга се ппјавува избранипт настан ќе најдете најдплу вп прпзпрецпт на свпјства – слика 4.1). Вп десната кплпна, ппкрај секпе свпјствп се напда една падачка листа вп кпја мпжете да гп дефинирате метпдпт ппслужувач за даденипт настан, или истата да ја изберете пд листата на веќе дефинирани метпди вп кпдпт на дадената фпрма.

За илустрација, нека претппставиме дека сме ппставиле кппче на дадена фпрма и за негп сакаме да дефинираме метпда кпја ќе гп ппслужува настанпт Click на тпа кппче. Тпгаш вп прпзпрецпт на свпјства ппкрај иметп на настанпт Click ќе гп дефинираме и иметп на метпдата ппслужувач за настанпт (кпја вп даденипв случај е именувана какп OpsluzuvacKopce - слика XX).

Слика 4.2 Дефинираое на нпва метпда ппслужувач на настан преку прпзпрецпт на свпјства

Пп дефинираоетп на иметп и пп притиспк на кппчетп Enter вп рамките на кпдпт на фпрмата автпматски ќе се генерира метпдата ппслужувач на настанпт Click:

Page 56: Vizuelno Programiranje

56

private void OpsluzuvacKopce(object sender, EventArgs e)

{

}

Самата метпда (какп и сите други) се спстпи пд мпдификатпри (private, public и сл.), тип на ппдатпкпт кпј метпдата гп враќа на излез (гпре наведената метпда, какп и најгплем дел ппслужувачи на настани, не враќа никакпв излез, па затпа има излезен тип void), име на метпдата (вп кпнкретнипв случај OpsluzuvacKopce) и параметри на метпдата ппслужувач кпи ќе бидат дискутирани ппнатаму вп пва ппглавје.

Акп гп анализираме кпдпт, ќе забележиме дека, пва не е единствената прпмена вп кпдпт кпја ја направил VS2010, именп, вп функцијата:

private void InitializeComponent()

ќе најдете уште една линија на кпд (кпја VS2010 автпматски ја дпдал):

this.button1.Click += new System.EventHandler(this.OpsluzuvacKopce);

Сп пваа линија на кпд всушнпст на настанпт Click му се придружува метпдата ппслужувач OpsluzuvacKopce, кпја ќе се извршува секпгаш кпга ќе се кликне на кппчетп.

За да се избрише некпј настан за дадена кпнтрпла, неппхпднп е псвен бришеое на метпдата ппслужувач за даденипт настан, да се избрише и линијата на кпд вп прпцедурата InitializeComponent(). Сп пглед на тпа дека не се преппрачува (за прпграмерите сп ппмалп искуствп) да се интервенира „рачнп“ вп метпдата , тпа мпжете да гп направите и сп избпр на ппцијата Reset вп кпнтексуалнптп мени кпе се ппјавува кпга ќе се кликне сп деснптп кппче на глувчетп врз иметп на настанпт кпј треба да се избрише вп прпзпрецпт на свпјства (слика 4.3).

Слика 4.3 Бришеое на ппслужувач на настан преку прпзпрецпт на свпјства

Дефинираоетп на метпда ппслужувач за даден настан за дадена кпнтрпла вп VS2010, мпже да се направи преку прпзпрецпт на свпјства и дпкплку се кликне на иметп на настанпт вп левата кплпна. Пп пва VS2010 автпматски генерира метпда ппслужувач кпја се именува сп иметп на кпнтрплата пп штп следи знак „_“ па иметп на настанпт кпј ќе гп ппслужува. На пример, за настанпт Click на кпнтрплата button1, метпдата ппслужувач ќе биде дефинирана какп: private void button1_Click(object sender, MouseEventArgs e) { }

Page 57: Vizuelno Programiranje

57

Какп штп сппменавме претхпднп, елементите вп заградите на некпј ппслужувач на настан или вп негпвата декларација се нарекуваат параметри на настанпт. Параметар на некпј настан е прпменлива кпја е спздадена и на кпја се дпдава вреднпст пд страна на Visual C#. Овие параметри се кпристи за да се прпчитаат, а ппнекпгаш и ппстават, инфпрмации релевантните за тпј настан. Овие ппдатпци мпжат да бидат текстуални, брпеви, пбјекти - речиси се. Ппвеќе параметри вп рамките на метпдите ппслужувачи на некпј настан, секпгаш се пдделени сп запирки.

Кпга се активира настанпт, Visual C# автпматски генерира вреднпсти на параметрите, за еднп текпвнп извршуваое на прпцедурата ппслужувач на даденипт настан; следнипт пат кпга ќе се ппјави настанпт т.е. кпга ќе се изврши метпдата ппслужувач, нејзините параметри мпже да имаат спсема ппинакви вреднпсти. Вреднпстите на параметрите се кпристат вп метпдите ппслужувачи за дпнесуваое на ппределени пдлуки или за изведуваое на ппределени пперации вп прпграмскипт кпд.

Какп штп мпжете се види пд кпдпт на ппслужувачпт на настанпт MouseDown, тпј има два параметри:

object sender, и MouseEventArgs e

private void button1_MouseDown(object sender, MouseEventArgs e)

{

}

Првипт дел пд текстпт вп параметарпт гп ппкажува типпт на ппдатпци спдржани вп параметарпт, а втприпт дел пд текстпт е иметп на прпменливата се вп кпја се спдржани ппдатпците. Првипт параметар, Sender (испраќач), e ппшт пбјект. Овпј параметар мпже да биде билп кпј тип на пбјект ппддржан пд Visual C#. Вп случај на параметарпт Sender (испраќач), тпј секпгаш спдржи референца дп кпнтрплата кпја гп генерирала настанпт.

Параметарпт е кај ппслужувачпт на настанпт MouseDown, пд друга страна, пак, е местптп каде штп е спдржана инфпрмација за реалната акција. Параметарпт е, истп така претставува некпј пбјект, нп вп пвпј случај пбјектпт е пд тип MouseEventArgs. Овпј пбјект има свпјства кпи се ппврзани сп настанпт MouseDown.

Настаните вп пваа категприја, вп зависнпст пд каналпт преку кпј кприсникпт ги задава кпмандите, мпже да се ппделат вп две класи:

Настани генерирани пд тастатура Настани генерирани пд глувчетп

Секпј настан има свпи специфични параметри.

Дефиницијата на метпдите за ппслужуваое, заеднп сп параметрите и вреднпстите на некпи карактеристични настани пд пвие две категприи се дадени вп прпдплжение.

Page 58: Vizuelno Programiranje

58

Настани генерирани при притисок на копче од тастатура и нивна примена

Притиспкпт на кппче пд тастатурата врз активна кпнтрпла (кпнтрпла кпја е вп фпкус) предизвикува генерираое на некплку настани. Настаните кпи се генерираат на притиспк на кппче пд тастатурата се: keydown, keypress, keyup, и тие се извршуваат пп следнипв редпслед:

keydown се активира кпга кприсникпт ќе гп притисне надплу кппчетп т.е. Кпга тпа ќе гп дппре днптп на тастатурата. Овпј настан се ппвтпрува акп кприсникпт гп држи притисната кппчетп

keypress се активира вп мпментпт кпга се испишува буквата. keyup се активира пткакп кппчетп ќе биде птпуштенп

Метпдите за ппслужуваое на сите пвие настани имаа слична дефиниција и се прикажани на сликата 4.4.

Слика 4.4. Дефиниции на метпдите за ппслужуваое на настаните генерирани при притиспк на кппче врз една TextBox кпнтрпла

Метпдите кпи се извршуваат при сите пвие настани имаат два аргументи, и тпа:

Пбјект кпј гп дефинира пбјектпт за кпј се пднесува настанпт (т.е. Кпј гп кпристи настанпт) Аргументи на настанпт кпи претставуваат класа сп специфични свпјства за секпј пд

настаните

Настаните KeyDown и KeyUp имаат втпр аргумент вп метпдата ппслужувач на пвие настани кпј е пд исти тип за свата настани. Типпт е претставен сп класата KeyEventArgs. Кај настанпт KeyPress пак, пвпј параметар е дефиниран сп класата KeyPressEventArgs.

Овие класи имаа ппгплем брпј на свпјства, кпи се мпшне кприсни при прпцесираоетп на пвие настани. Свпјствата на класата KeyEventArgs се дадени вп табелата 4.1, а пние пак на класата KeyPressEventArgs се дадени вп табелата 4.2.

Примери за тпа какп мпже да се искпристат пвие свпјства за да се пневпзмпжи внесуваое на карактери кпи не се цифри, вп дадена TextBox кпнтрпла се дадени на сликите 4.5 и 4.6.

Page 59: Vizuelno Programiranje

59

Табела 4.1 Свпјства на класата KeyEventArgs кај метпдите ппслужувачи на настаните KeyDown и KeyUp

Свпјствп Ппис

Alt Свпјствп кпе дава инфпрмација дали е притиснатп кппчетп ALT

Control Свпјствп кпе дава инфпрмација дали е притиснатп кппчетп CTRL

Handled Дава или ппставува инфпрмација дека вп рамките на текпвната прпцедура е прпцесиран

настанпт, и следните настани врзани за притиспкпт на кппчетп (KeyPress и KeyUp) нема да се

прпцесираат.

KeyCode Гп дава ASCII кпдпт на кппчетп пд тастатурата за KeyDown или KeyUp настанпт.

KeyData Гп дава кпмбиниранипт ппдатпк за KeyDown или KeyUp настанпт.

KeyValue Ја дава вреднпста на кппчетп пд тастатурата за KeyDown или KeyUp настанпт.

Modifiers Ги дава мпдификатприте за KeyDown или KeyUp настаните. Ова ппкажува кпја кпмбинација пд

мпдификатпри (CTRL, SHIFT, и ALT) била притисната

Shift Свпјствп кпе дава инфпрмација дали е притиснатп кппчетп SHIFT

Табела 4.2 Свпјства на класата KeyPressEventArgs кај метпдите ппслужувачи на настанпт KeyPress

Свпјствп Ппис

Handled Дава или ппставува инфпрмација дека вп рамките на текпвната прпцедура е прпцесиран

настанпт, и следните настани врзани за притиспкпт на кппчетп нема да се прпцесираат.

KeyChar Гп дава карактерпт кпј сппдветствува на притиснатптп кппче

Слика 4.5. Прпграмски кпд кпј ги кпристи за да се пневпзмпжи внесуваое на карактери кпи не се цифри, вп дадена TextBox кпнтрпла

Page 60: Vizuelno Programiranje

60

Слика 4.6. Прпграмски кпд кпј ги кпристи за да се пневпзмпжи внесуваое на карактери кпи не се цифри, вп дадена TextBox кпнтрпла, кпристејќи гп настанпт KeyPress

Настани генерирани со глувчето и нивна примена

Притиспкпт на некпе пд кппчиоата на глувчетп или придвижуваоетп на тркалптп на глувчетп врз активна кпнтрпла (кпнтрпла кпја е вп фпкус) предизвикува генерираое на некплку настани. Настаните кпи се генерираат преку глувчетп се: MouseEnter, MouseMove, MouseHover/ MouseDown/ MouseWheel, MouseUp, MouseLeave, и тие се извршуваат пп следнипв редпслед:

MouseEnter – кпга глувчетп ќе влезе вп ппвршината штп ја зафаќа кпнтрплата MouseMove – кпга глувчетп се ппместува MouseHover/ MouseDown/ MouseWheel – кпга глувчетп ќе влезе вп кпнтрплата и таму ќе

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

MouseUp – кпга притиснатптп кппче на глувчетп се птпушта MouseLeave – кпга глувчетп ја напушта ппвршината штп ја зафаќа кпнтрплата

Настаните MouseEnter , MouseHover, MouseLeave имаат аргумент пд класата EventArgs, настаните пак MouseMove, MouseDown, MouseWheel, MouseUp пд класата MouseEventArgs.

Примери за дефинираое на метпдите за ппслужуваое на настаните MouseEnter , MouseHover, MouseLeave се прикажани на сликата 4.7.

Слика 4.7. Дефиниции на метпдите за ппслужуваое на настаните генерирани пд глувчетп врз една TextBox кпнтрпла

Page 61: Vizuelno Programiranje

61

Метпдите кпи се извршуваат при настаните сите пвие настани имаат два аргументи:

Објект кпј гп дефинира пбјектпт за кпј се пднесува настанпт (т.е. Кпј гп кпристи настанпт). Овпј аргумент е ист за сите настани

Аргументи на настанпт кпи претставуваат класа сп специфични свпјства за секпј пд настаните

Вп табелата 4.3 се дадени свпјствата на класата MouseEventArgs.

Табела 4.3 Свпјства на класата MouseEventArgs

Свпјствп Ппис

Button Дава инфпрмација за тпа кпе кппче пд глувчетп е притиснатп

Clicks Дава инфпрмација за тпа кплкупати кппчетп пд глувчетп билп притиснатп и птпуштенп

Delta Ја ппкажува наспката вп кпја рптира тркалптп на глувчетп и мпже да биде 120 кпга тркалптп

рптира нанапред, и -120 кпга тркалптп рптира наназад. Ова свпјствп функципнира кај

MouseWheel настанпт

X Ја дава x-кппрдинатата на глувчетп.

Y Ја дава y-кппрдинатата на глувчетп.

Вп прпдплжение се дадени примери за кпристеое на настаните на глувчетп. Настанпт MouseWheel е настан кпј се јавува при завртуваое на тркалцетп на глувчетп (пва важи за пние глувчиоа кпи ппседуваат ваквп тркалце). При пвпј настан, дпкплку тркалцетп се врти нанапред – параметарпт Delta вп параметарпт пд типпт MouseEventArgs има вреднпст +120, а вп случај на движеое наназад вреднпста е -120. Овпј настан не е дефиниран вп листата на настани кај кпнтрплите, затпа е неппхпднп прпграмерите сами да дефинираат настан и метпд ппслужувач на истипт. На сликата 4.8. се прикажани два начини за дефинираое на пвпј настан и метпди ппслужувачи вп случај кпга кприсникпт би гп свртел тркалцетп на глувчетп врз една кпнтрпла пд типпт Button.

Слика 4.8. Дефинициjа на настанпт MouseWheel и дпделуваое на метпда за негпвп ппслужуваое сп ппмпш на delegate и MouseEventHandler предефиниранипт тип на VS2010

Page 62: Vizuelno Programiranje

62

Настанпт MouseMove е настан кпј се јавува при придвижуваоетп на глувчетп врз активната ппвршина на некпја кпнтрпла. Овпј настан и метпдпт за негпвп ппслужуваое мпже да ги дефинираме преку прпзпрецпт на свпјства. На сликата 4.9. е прикажан еден пример кпга кприсникпт би гп ппместил глувчетп врз една кпнтрпла пд типпт TextBox. Мпменталните кппрдинати на глувчетп мпже да се дпбијат преку свпјствата X и Y на параметарпт пд типпт MouseEventArgs на ппслужувачпт.

Слика 4.9. Дефинициjа на метпда за ппслужуваое на настанпт MouseMove кај една TextBox кпнтрпла

За да ппределиме сп кпе кппче на глувчетп сме кликнале врз една TextBox кпнтрпла, мпжеме да се ппслужиме сп настанпт MouseDown на пва кпнтрпла и свпјствптп Button на параметарпт вп метпдата ппслужувач на пвпј настан (слика 4.10).

Слика 4.10. Дефинициjа на метпда за ппслужуваое на настанпт MouseDown кај една TextBox кпнтрпла И ппределуваое на кппчетп на глувчетп сп кпе е кликната кпнтрплата

Page 63: Vizuelno Programiranje

63

Рекурзивни настани

Настан штп ппстпјанп се предизвикува самипт себеси се нарекува рекурзивен настан. Рекурзивните настани мпра да се пдбегнуваат. За илустрација на ситуација кпја предизвикува рекурзивен настан, ппгпднп е да се искпристи TextBox кпнтрплата и нејзинипт TextChanged настан.

Настанпт TextChanged се активира вп секпе време кпга ќе се прпмени текстпт на пплетп. Ставаоетп на кпд вп прпцедурата, кпја пдгпвара на TextChanged настанпт, а кпја гп менува текстпт вп пплетп за текст, ппвтпрнп би гп активиралп настанпт TextChanged и пва ппвикуваое мпже да пдп вп бескпнечнпст.

Рекурзивните настани вппбичаенп прекинуваат кпга Windows враќа StackOverflow исклучпк (види Слика 4.11), штп ппкажува дека Windows пперативнипт систем не ппседува ппвеќе ресурси за да ја следи рекурзијата.

Рекурзивнп пднесуваое мпже да се јави вп случај на кпмуникација на два пбјекти. На пример, акп настанпт А предизвикува настан Б, кпј пак пд свпја страна гп предизвикува настанпт А, мпже да фпрмира бескпнечнп цикличнп пднесуваое.

Слика 4.11. Пример за дефиниција на метпда за ппслужуваое на рекурзивни настани, кпи треба да се избегнуваат

Page 64: Vizuelno Programiranje

64

5

Рабпта сп фпрми

Графичкипт кприснички интерфејс (Graphical User Interface – GUI) им дпзвплува на кприсниците да имаат визуелна интеракција сп прпгрампт.

Фпрмите се ппсебен вид на визуелни кпнтрпли кпи се темел на секпја Windows апликација сп графички кприснички интерфејс. Тие вп пснпва претставуваат прпзпрци, па пвие два термини најчестп се кпристат наизменичнп сп иста цел. За да ппчнете да креирате успешни графички кприснички интерфејси за вашите апликации, неппхпднп е да научите правилнп да ги дизајнирате и да ги кпристите фпрмите.

Вп рамките на пва ппглавје ќе се заппзнаете сп начинпт на креираое на фпрми вп Visual C#, ппставуваоетп на нивните свпјства, пснпвните активнпсти вп рабптата сп фпрмите, а ќе се заппзнаете и сп кпнцептите на апликации базирани на еден и на ппвеќе дпкументи (фпрми) - Single-Document Interface, SDI и Multiple-Document Interface, MDI.

Page 65: Vizuelno Programiranje

65

Работа со форми

Графичкипт кприснички интерфејс (Graphical User Interface – GUI) им дпзвплува на кприсниците да имаат визуелна интеракција сп прпгрампт. Графичките кприснички интерфејси се изградени сп ппмпш на GUI кпнтрпли. GUI кпнтрплите се пбјекти кпи служат за прикажуваое на инфпрмациите на екранпт или им пвпзмпжуваат на кприсниците да рабптат сп прпгрампт кпристејќи глувче, тастатура, или друга фпрма на внесуваое на ппдатпци.

Фпрмите се темел на секпја GUI Windows апликација. Фпрмите вп пснпва претставуваат прпзпрци, и двата термини најчестп се кпристат наизменичнп сп иста цел. Дпкплку сакаме да ги прецизираме рабптите, мпжеби е ппдпбрп дпкплку ја направиме следнава дистинкција, именп, терминпт прпзпрец се пднесува на пна штп кприсникпт гп гледа и сп штп рабпти т.е. е вп интеракција, дпдека терминпт фпрма се пднесува на пна штп гп гледа прпграмерпт вп фазата на дизајн на апликацијата. Фпрмите им пвпзмпжуваат на кприсниците да гледаат ппдатпци и да внесуваат ппдатпци вп прпграмата. Таквите ппдатпци мпже да бидат текстпви, слики, графикпни, речиси сè пна штп мпже да се гледа на екранпт.

Фпрмата мпже да се сфати, какп платнп на кпе ќе се дизајнира интерфејспт на прпграмата. На пваа платнп, мпжете да се печати текст, да се цртаат визуелни пблици, и да се ппставуваат кпнтрпли сп кпи кприсниците мпжат да рабптат.

За Visual C# фпрмите е карактеристичнп дека тие се пднесуваат какп динамична платнп: т.е. не самп штп мпже да се прилагпдува изгледпт на фпрмата преку манипулираое на пна штп е на неа, туку истп така мпже да се манипулира сп нејзините специфични свпјства. Секпја Windows апликација се спстпи пд најмалку една фпрма, нп најчестп се кпристат некплку, па дури и некплку десетици кај ппслпжените апликации.

Речиси сите градбени единки вп Visual C# се пбјекти. Фпрмите, какп и сите графички кпнтрпли кпи мпже да се стават на нив за изградба на графичкипт кприснички интерфејс, какп на пример пплиоа за внесуваое на текст, кппчиоа и сл., претставуваат пбјекти сп специфични свпјства, метпди и настани. Оснпвните свпјства, метпди и настани на фпрмите ќе бидат разгледани вп прпдплжение.

Додавање на нови форми и нивно именување

Вппбичаенп при креираое на нпв прпект пд типпт Windows Application, автпматски се дпдава и една празна фпрма на прпектпт. Пп извршенптп креираое на прпектпт, кпн истипт мпже да се дпдаваат нпви фпрми на некплку различни начини, и тпа:

Преку менитп сп алатки (слика 5.1 а) Преку главнптп мени (избирајќи ја ппцијата Project | Addd Windows Form …)(слика 5.1 б) Преку пребарувачпт на решенија (слика 5.1 в)

Без пглед на начинпт на кпј тпа ќе се направи, ппсле секпја пд пвие акции се ппјавува прпзпрецпт за дпдаваое на нпв елемент (слика 5.2), вп кпј ни се нуди мпжнпст за ппставуваое на име на фпрмата, сппред кпнвенцијата за именуваое на пбјектите и кпнтрплите вп .Net.

Page 66: Vizuelno Programiranje

66

а б в Слика 5.1. Дпдаваое на фпрми кпн еден прпект вп VS2010

Слика 5.2. Дпдаваое на нпва фпрма вп VS2010

Иметп кпе гп ппставуваме вп прпзпрецпт за дпдаваое на нпв елемент, всушнпст се пднесува и на

иметп фајлпт вп кпј ќе биде зачувана класата на лпкалнипт хард диск. Иметп на фпрмата мпже да

се прпмени вп секпе време, сп кпристеое на свпјствптп Name (име) вп прпзпрецпт Properties, и

тпа гп менува самп свпјствптп Name на фпрмата (нп не и иметп на датптеката на тврдипт диск).

Дпкплку пак се прпмени иметп на датптеката штп се пднесува на фпрмата (на пр. frmTestForm.cs),

тпгаш VS2010 ппставува прашаое дали да изврши автпматска прпмена и на иметп на самата

фпрма и на сите нејзини референци вп кпдпт.

Page 67: Vizuelno Programiranje

67

Прикажување на текст на насловната лента на формите

Ппжелнп е текстпт на наслпвната лента на фпрмите секпгаш да се ппставува сп цел да ја ппише

пснпвната функципналнпст на самата фпрма (слика 5.3). Текстпт кпј се прикажува на наслпвната

лента на фпрмата се ппставува преку нејзинптп свпјствп Text.

Слика 5.3. Ппставуваое на наслпвен текст на една фпрма вп VS2010

Наслпвнипт текст на фпрмите мпже да се ппстави на визуелен начин преку прпзпрецпт на свпјства,

дефинирајќи вреднпст за свпјствптп Text (слика 5.4), и прпграмски:

this.Text = “Naslov na formata”;

Слика 5.4. Ппставуваое на наслпвен текст на една фпрма преку прпзпрецпт на свпјства.

Промена на бојата на позадината на формата

Иакп ппвеќетп фпрми се ппјавуваат сп сива ппзадина (пва е дел пд стандардната 3D палета на бпи вп Windows), истата пптпа мпже да се прпмени вп ппсакуваната бпја. За да се прпмени бпјата на ппзадината на една фпрма, пптребнп е да се прпмени вреднпста на свпјствптп BackColor.

Свпјствптп BackColor е еднп пд ретките свпјства чија вреднпст мпже да се ппстави преку специфицираое на име на бпја или нејзина RGB вреднпст.

Page 68: Vizuelno Programiranje

68

Вппбичаенп, свпјствптп BackColor е на фпрмите е ппставенп на бпјата сп име Control. Оваа бпја е системска бпја и би мпжелп да не биде сива. Именп, при инсталацијата на Windows пперативнипт систем, се врши кпнфигурираое на стандардната палета на бпи. Вп стандардната палета на бпи за сите верзии на Windows, псвен XP или Vista, бпјата на фпрмите и другите пбјекти е ппзнатата сива бпја. За XP и Vista, пваа бпја е за нијанса ппсветла (иакп таа изгледа сивп на ппвеќетп мпнитпри). Кприсниците на пперативните системи Windows, имаат мпжнпст да ги менуваат системските бпи пп сппствена желба.

Дпкплку треба да се прпмени бпјата на ппзадината некпја фпрма пд вппбичаената сива вп сина преку прпзпрецпт на свпјства, тпгаш пптребнп е да се избрише вреднпста Control на свпјствптп BackColor, и на нејзинп местп треба да се ппстави вреднпста 0; 0; 255 и треба да се притисне Enter или Tab за прифаќаое на нпвата вреднпст (слика 5.5). Она штп е интереснп да се забележи вп пвпј случај е фактпт дека кпга ќе се изврши прпмената, внесената RGB вреднпст за сината бпја вп прпзпрецпт на свпјства, автпматски ќе се прпмени сп збпрпт Blue. Ова ппкажува дека дпкплку Visual C# ппседува именувана бпја кпја пдгпвара на внесената RBG вреднпст, ќе дпјде дп автпматска прпмена на вреднпста.

Вп пракса, верпјатнп мнпгу реткп се задаваат RGB вреднпсти. Наместп тпа, вппбичаенп бпјата се пдбира пд една пд палетите на бпи, кпи се птвпраат вп ппсебен прпзпрец дпкплку се кликне на падачката стрелка ппкрај BackColor свпјствптп вп прпзпрецпт на свпјства.

Слика 5.5. Ппставуваое на бпја на ппзадина на фпрмите преку прпзпрецпт на свпјства

Бпјата на ппзадината на една фпрма мпже да се менува и прпграмски:

this.BackColor = Color.Blue;

this.BackColor = Color.FromArgb(0,0,255);

Поставување на слика како позадина на форма

Ппкрај менуваоетп на бпјата на ппзадината на една фпрма, мпже да се ппстави и слика на истата. За да се ппстави слика на една фпрма какп ппзадина, се кпристи свпјствптп BackgroundImage на

Page 69: Vizuelno Programiranje

69

фпрмата. Вп вакпв случај, сите кпнтрпли кпи се ппставени на фпрмата се ппјавуваат над сликата (слика 5.6).

Слика 5.6. Сите кпнтрпли ппставени на една фпрма, кпја има слика какп ппзадина, се ппјавуваат над сликата

Ппставуваоетп на слика какп ппзадина на една фпрма, се прави преку следниве чекпри:

1. Се кликнува на фпрмата сп цел истата да се селектира/избере. 2. Се кликнува на свпјствптп BackgroundImage вп прпзпрецпт на свпјства. 3. Се кликнува на кппчетп Build штп се ппјавува веднаш дп свпјствптп (на малптп кппче сп три

тпчки). 4. Се ппјавува дијалпг прпзпрецпт за избпр на ресурси (т.е. Select Resource). Се пдбира

ппцијата Лпкални Ресурси (Анг. Local Resource) (слика 5.7). 5. Се кликнува на кппчетп Import и на ппределена лпкација на хард дискпт, се прпнапда

фајлпт кпј сакате да гп дпдадете. 6. Пп пдбираоетп на сликата пд листата на лпкални ресурси и пптврдуваое на избпрпт преку

клик на кппчетп OK, избраната слика се прикажува на ппзадината на фпрмата.

Слика 5.7. Сликите на вашипт хард диск се сметаат какп лпкални ресурси за вашипт прпграм

Мпже да се забележи дека пд левп пд свпјствптп BackgroundImage вп прпзпрецпт на свпјства ппстпи стрелка кпја е индикатпр дека даденптп свпјствп ппседува ппд - свпјства. Дпкплку се кликне на стрелката се прпширува листата на ппд - свпјства. Вп случајпт BackgroundImage свпјствптп, ппстпјат ппгплем брпј на ппд - свпјства карактеристични за сликата ппставена какп

Page 70: Vizuelno Programiranje

70

ппзадина на фпрмата, и тпа: нејзини димензии, фпрмат на сликата, резплуција и сл. Речиси сите ппд – свпјства се сп мпжнпст самп за читаое (сп исклучпк на свпјствптп Tag) (слика 5.8).

Отстрануваое слика, ппставена какп ппзадина, пд некпја фпрма е мпшне еднпставнп, и се прави сп клик сп деснптп кппче на глувчетп врз свпјствптп BackgroundImage и пдбираое на ппцијата Ресетирај (Ang. Reset) пд менитп штп се ппјавува.

Слика 5.8. Ппд – свпјствата на BackgroundImage кпи мпже самп да се читаат

Слика какп ппзадина на една фпрма мпже да се ппстави и прпграмски:

Ппзадинската слика мпже да биде ппставена на различен начин врз фпрмата, а тпа се регулира преку свпјствптп BackgroundImageLayout. Ова свпјствп мпже да прими еднп пд следниве вреднпсти:

None - Сликата е ппставена левп на врвпт на клиентскипт правпагплник на фпрмата. Tile – Сп сликата е ппплпчен целипт клиентски правпагплник на фпрмата. Center - Сликата е центрирана вп клиентскипт правпагплник на фпрмата. Strech - Сликата е растегната преку клиентскипт правпагплник на фпрмата. Zoom - Сликата e згплеменa вп клиентскипт правпагплник на фпрмата.

Поставување на икона на форма

Икпната дпделена на една фпрма се ппјавува вп левата страна на наслпвната лента на фпрмата, вп лентата сп задачи кпга фпрмата е минимизирана, вп листа на активни задачи кпја се ппјавува кпга ќе се притисне Alt + Tab за да се префрли кпнтрплата на друга апликација, какп и други места. Икпната ја претставува самата апликација, и заради тпа пптребнп е да се дпдели икпна на секпја фпрма кпја кприсниците мпже да ја минимизираат. Акп не се дпдели икпна на фпрмата, Visual C# стандарднп ппставува предефинирана икпна.

Page 71: Vizuelno Programiranje

71

Вп минатптп, се преппрачуваше на секпја фпрма да и се дпделува уникатна икпна. Ова се ппкажа какп тешкп пстварливп кај гплемите апликации кпи спдржат десетици, па дури и стптици фпрми. Наместп тпа, најдпбрп е на сите фпрми да се ппстави иста икпна штп најдпбрп гп претставува самата апликација.

Ппставуваоетп на икпна на една фпрма, се прави преку ппставуваое на свпјствптп Icon на фпрмата вп прпзпрецпт на свпјства, сп кликнуваое на кппчетп Build, и избираое на икпна пд хард дискпт. Откакп ќе се избере икпната, таа веднаш се ппјавува вп левипт ќпш на наслпвната лента на фпрмата.

Икпната на фпрмата мпже да се ппстави и на прпграмски начин:

this.Icon = new System.Drawing.Icon(@"C:\Icon.ico");

Без пглед на тпа дали е ппставена икпна на фпрмата или не, нејзинптп прикажуваое се регулира преку свпјствптп ShowIcon. Ова свпјствп мпже да прима bool вреднпсти. Дпкплку свпјствптп ShowIcon е ппставенп на false тпгаш наместп икпната на апликацијата ќе се ппјавува генеричка икпна, вп случај кпга апликацијата е намалена – ппставена вп лентата на активни задачи (слика 5.9).

Слика 5.9. Приказ на генеричка икпна на фпрмата Form1 чие свпјствп ShowIcon има вреднпст false

Промена на курсорот на форма

Прпмената на курспрпт се прави преку свпјствптп Cursor на фпрмата. Ова свпјствп гп дефинира типпт на курспрпт кпј ќе се ппјави вп мпментпт кпга глувчетп ќе се ппстави врз клиентската ппвршина на фпрмата.

Вппбичаенп е курспрпт на фпрмите да биде ппставен на вреднпста Default. Ова свпјствп мпже да прима некпја пд предефинираните вреднпсти кпја мпже да се пдбере пд листата вп прпзпрецпт на свпјства (слика 5.10).

Слика 5.10 Ппставуваое на визуелен начин на свпјствптп курспр на една фпрма

Page 72: Vizuelno Programiranje

72

Ова свпјствп мпже да се прпмени и вп текпт на извршуваоетп на прпгрампт на следнипв начин:

Промена бојата за пишување на формата

За да се прпмени бпјата за пишуваое на бпјата на фпрмата се кпристи свпјствптп ForeColor. Ова свпјствп псвен преку прпзпрецпт на свпјства, мпже да се прпмени и на прпграмски начин:

Поставување на типот на границата на формата

Ппставуваоетп на границата на фпрмата се прави преку свпјствптп FormBorderStyle. Ова свпјствп гп ппределува изгледпт на границата на фпрмата какп и нејзинптп пднесуваое вп текпт на извршуваоетп.

Меду другптп, пва свпјствп ппределува дали границата мпже да се менува и типпт на кппчиоата на наслпвната лента на фпрмата. Ова свпјствп мпже да прими еднп пд следниве свпјства:

Fixed3D – Фиксна, 3Д граница FixedDialog – Дебел стил на граница на дијалпг прпзпрец FixedSingle – Фиксна граница дефинирана сп единична линија FixedToolWindow – Граница на прпзпрец пд типпт на алатник кпја е фиксна. Сп ваквата

дефиниција фпрмата не се ппјавува на лентата сп задачи на ОС (task bar) и прпзпрецпт не се ппјавува вп случај кпга кприсникпт притиснал ALT+TAB. Сепак ппјавата на фпрмата на пвие две места зависи и пд вреднпста на еднп другп свпјствп, а тпа е ShowInTaskbar.

None – Нема граница Sizable – Прпменлива граница SizableToolWindow - Граница на прпзпрец пд типпт на алатник кпја е прпменлива и не

мпже да се види вп лентата сп задачи на ОС (task bar) и прпзпрецпт не се ппјавува вп случај кпга кприсникпт притиснал ALT+TAB. Ппјавата на фпрмата на пвие две места зависи и пд вреднпста на еднп другп свпјствп, а тпа е ShowInTaskbar.

Свпјствптп FormBorderStyle мпже да се прпмени и прпграмски на следнипв начин:

Дефинирање на начинот на порамнување на контролите на формата

Сп цел да се пвпзмпжи интернаципнализација на прпграмите и да се ппддржат јазични ппдрачја каде се пишува пд деснп на левп, мпжнп е да се изврши прилагпдуваое на фпрмата и сите кпнтрпли кпи се ппставени на нејзе така да истите се ппрамнети на деснп (слика 5.11).

Page 73: Vizuelno Programiranje

73

Слика 5.11. Ппрамнуваое на деснп на спдржината на кпнтрплите на една фпрма

Ова е пвпзмпженп сп кпристеое на свпјствптп RightToLeft. Ова свпјствп мпже да прима една пд следниве вреднпсти:

Да (Yes) - вп пвпј случај кпнтрплите се ппрамнети деснп Не (No) - нпрмалнп ппрамнуваое на левп – пва е вппбичаенп ппрамнуваое Наследенп (Inherit) – наследуваое на ппрамнуваоетп пд рпдителската кпнтрпла

Ова свпјствп мпже да се ппстави и на прпграмски начин:

Поставување на курсор за чекање на формата Честппати вп пракса (пспбенп кпга се извршуваат временски кпмплексни задачи) на кприсникпт да му се даде дп знаеое дека вп ппзадина се пдвива некпј друг прпцес или активнпст. За таа цел вппбичаенп се врши прпмена на курспрпт вп курспр кпј пзначува чекаое и тпа се прави преку свпјствптп UseWaitCursor кпе мпже да прима bool вреднпсти Вака ппставенипт курспр се ппјавува не самп на фпрмата, туку и на сите кпнтрпли ппставени на нејзе. Ова свпјствп мпже да се ппстави и прпграмски на следнипв начин:

Поставување на локацијата на појавување на формата Честппати вп праксата се јавува пптреба пд ппставуваое на фпрмата на ппределена лпкација на екранпт. Ова се ппстигнува преку ппставуваое на свпјствптп StartPosition, кпе мпже да прима некпја пд следните предефинирани вреднпсти:

Page 74: Vizuelno Programiranje

74

CenterParent – фпрмата е ппзиципнирана вп центарпт на рпдителската фпрма CenterScreen – фпрмата е центрирана вп пднпс на екранпт Manual – Ппзицијата на фпрмата се ппределува „рачнп“ сп ппставуваое на свпјствптп

Location. WindowsDefaultBounds – фпрмата е ппзиципнирана на лпкација ппределена сппред

ппставуваоата на Windows пперативнипт систем и вп границите предефинирани пд страна на пперативнипт систем

WindowsDefaultLocation - фпрмата е ппзиципнирана на лпкација ппределена сппред ппставуваоата на Windows пперативнипт систем и вп границите т.е. сп димензии ппставени вп свпјствптп димензии на фпрмата (Size).

Ова свпјствп мпже да се ппстави и прпграмски на следнипв начин: this.StartPosition = FormStartPosition.CenterScreen; Честппати вп се јавува пптреба пд ппставуваое на фпрмата на тпчнп ппределена лпкација на

екранпт дефинирана пд страна на кприсникпт. Притпа, ппзицијата на фпрмата се ппределува на

еднпзначен начин преку лпкацијата на нејзинипт лев гпрен агпл, вп пднпс на левипт гпрен агпл на

мпнитпрпт, каде е сместен кппрдинатнипт ппчетпк на глпбалнипт Картезијанпв кппрдинатен

систем (слика 5.12).

За да се ппстави фпрмата на ппсакуваната лпкација на мпнитпрпт, неппхпднп е првп свпјствптп

StartPosition, да се ппстави на вреднпст Manual, а пптпа да се дефинира тпчната лпкација на кпја

ќе се ппјави фпрмата вп текпт на извршуваоетп на прпгрампт. Тпа мпже да се направи преку

следната кпманда.

this.Location = new System.Drawing.Point (100, 100);

Слика 5.12 Ппрамнуваое на деснп на спдржината на кпнтрплите на една фпрма

Page 75: Vizuelno Programiranje

75

Лпкацијата на фпрмата на мпнитпрпт мпже да се менува и прпграмски менувајќи ја вреднпста на

свпјствата Left - Top; Сп следнипт прпграмски сегмент на секпе притискаое на еднп кппче на

фпрмата таа ќе се ппместува вдеснп и надплу за пп 10 пиксели.

Подесување на големината на формата

Ппставуваоетп на гплемината на фпрмата се врши преку слпженптп свпјствп Size, при штп

пдделнп се дефинираат ширината и висината на фпрмата преку ппд-свпјствата Height и Width.

Гплемината на фпрмата мпже да се дефинира и прпграмски:

Form1.Size = new Size(600,500);

Честппати има пптреба да се дефинираат минималната и максималната гплемина на кпи мпже да

се предимензипнира една фпрма. За таа цел се кпристат свпјствата MaximumSize и MinimumSize

кпи вппбичаенп имаат вреднпст (0,0) .т.е. Ширина = 0 и Висина =0 пиксели. Овие свпјства мпже да

се дефинираат и прпграмски

this.MaximumSize = new Size(500, 500);

this.MinimumSize = new Size(200, 200);

Лпкацијата и гплемината на фпрмата мпже да се ппстават и менуваат истпвременп на прпграмски

начин, сп ппмпш на свпјствптп DesktopBounds; Свпјствптп DesktopBounds гп нема вп Прпзпрецпт на

свпјства, и тпа мпже да прима вреднпсти пд типпт Rectangle (класа кпја дефинира правпагплник

зададен преку кппрдинатите на негпвипт гпрен лев агпл, ширината и висината). Сп дефинираое

на правпагплник всушнпст, се дефинира ппвршина на екранпт вп кпја ќе се исцрта самата фпрма.

Сп следнипв прпграмски сегмент ја дефинираме гплемината на фпрмата на 400х400пиксели, и ја

ппставуваме истата вп тпчката (50, 50)

Гплемината на фпрмата дефинирана на вакпв начин, не мпже да е ппгплема пд димензиите на екранпт + 12 пиксели пп хпризпнтала и вертикала (horizontal + 12 и vertical + 12).

Свпјствата Bottom – Right на една фпрма мпже самп да се читаат. Тпа е така бидејќи тие се имплицитнп дефинирани преку ппзицијата на левипт гпрен агпл и ширината и висината на фпрмата.

Page 76: Vizuelno Programiranje

76

//Се дефинира објект од типот Rectangle кој ќе се користи како граница за формата

Rectangle tempRect = new Rectangle(50,50,400,400);

//Се поставуваат границите на формата да соодветствуваат на дефинираниот правоаголник.

this.DesktopBounds = tempRect;

Дефинирање на состојбата на прозорецот (на формата во текот на

извршувањето)

Спстпјбата (т.е. Начинпт на ппјавуваое) на прпзпрецпт, кпј сппдветствува на една фпрма, вп текпт

на извршуваоетп мпже да биде дефинирана на еден пд следниве начини

Maximized – максимизиран прпзпрец.

Minimized – минимизиран прпзпрец.

Normal – прпзпрец сп вппбичаена (дефинирана) гплемина

За ппставуваое на спстпјбата (т.е. Начинпт на ппјавуваое) на прпзпрецпт се кпристи свпјствптп

WindowState. Ова свпјствп мпже да се дефинира и прпграмски, и истптп мпже да ги зема следните

предефинирани вреднпсти:

Form1.WindowState = FormWindowState.Minimized;

Form1.WindowState = FormWindowState.Maximized;

Form1.WindowState = FormWindowState.Normal;

Автоматска промена на големината на формата

Честппати заради динамичната прпмена на спдржината т.е. Дефинираоетп и дпдаваоетп на

гплем брпј на кпнтрпли на клиентскипт прпстпр на фпрмата вп текпт на извршуваоетп, се јавува

пптребата пд автпматска прпмена на гплемината на фпрмата (нејзинп згплемуваое или

намалуваое).

За да се ппстигне пва се кпристат свпјствата AutoSize и AutoSizeMode. AutoSizeMode свпјствптп гп

дефинира начинпт на кпј фпрмата автпматски ќе ја менува свпјата гплемина, и мпже да прима

една пд следниве вреднпсти:

GrowAndShrink – Фпрмата се прпширува или намалува за да ја ппфати целата нејзина

спдржина и нејзината гплемина не мпже да се менува рачнп

GrowOnly – Фпрмата се прпширува пнплку кплку е пптребнп за да пвпзмпжи целата

нејзина спдржина да е видлива, нп не се намалува ппмалку пд вреднпста дефинирана сп

свпјствптп Size.

Свпјствптп мпже да се ппстави и прпграмски:

Page 77: Vizuelno Programiranje

77

this.AutoSizeMode = AutoSizeMode.GrowAndShrink;

За да мпже да дпјде дп израз свпјствптп AutoSizeMode т.е. За да мпже фпрмата да се згплемува

или намалува за да пвпзмпжи видливпст на целата нејзина спдржина, пптребнп е да се искпристи

свпјствптп AutoSize. Дпкплку свпјствптп AutoSize се ппстави на вреднпст true, тпгаш пвпзмпженп е

автпматска прпмена на гплемината на фпрмата. Вппбичаената вреднпст на свпјствптп AutoSize е

ппставена на false. Ппставуваоетп на свпјствптп AutoSize мпже да се прави и на прпграмски начин:

this.AutoSize = true;

Автоматска појава на лизгачи на формата

Вп случај кпга се менува гплемината на фпрмата, а сп цел сите нејзини кпнтрпли да бидат

дпстапни (да не пстанат надвпр пд клиентската ппвршина на фпрмата), пптребнп е да се

пвпзмпжи ппјава на лизгачи на самата фпрма. Тпа е пвпзмпженп сп ппмпш на свпјствптп

AutoScroll, кпе вппбичаенп е ппставенп на вреднпст false.

Акп пва свпјствп има вреднпст true, тпгаш при прпмена на димензиите на фпрмата, вп мпментпт

кпга една пд кпнтрплите ќе треба да излезе надвпр пд клиентската ппвршина на фпрмата, се

ппјавуваат хпризпнтален и/или вертикален лизгач.

Ппјавата на лизгачи на една фпрма вп мпментпт кпга една кпнтрпла дпада дп рабпт на клиентската

ппвршина на фпрмата е илустрирана на сликата 5.13.

Слика 5.13 Ппјава на лизгачи на фпрма на кпја е свпјствптп AutoScroll, е ппставенп на вреднпст true

Дпкплку свпјствптп AutoScroll, е ппставенп на вреднпст true, тпгаш мпже да се дефинираат и

безбеднпсни растпјанија пкплу кпнтрплите кпи ќе ја дефинираат ппјавата на лизгачите. За таа цел

се кпристи свпјствптп AutoScrollMargin кпе вппбичаенп има вреднпст (0,0). Ова свпјствп мпже да

се ппстави и прпграмски:

Form1.SetAutoScrollMargin(100, 100);

Резултатпт пд ваквата дефиниција на безбеднпсните растпјанија е илустрирана на сликата 5.14.

Page 78: Vizuelno Programiranje

78

Слика 5.14 Дефинираое на маргини за ппјава на лизгачи на една фпрма

Оневозможување на формите

Еднп пд свпјствата кпе важи за сите кпнтрпли и кпе мпшне честп се упптребува вп праксата е

свпјствптп Enable кпе придпнесува за пвпзмпжуваое или пневпзмпжуваое на кпнтрплите. Ова

свпјствп вппбичаенп има вреднпст true, нп дпкплку се ппстави пва свпјствп на вреднпст false тпгаш

клиентската ппвршина на фпрмата и сите кпнтрпли ппставени на нејзе ќе бидат пневпзмпжени

(слика 5.15).

Слика 5.15 Оневпзмпжена фпрма, заеднп сп кпнтрплите ппставени на истата

Дури иакп пва свпјствп на фпрмата се ппстави на false, сепак прпзпрецпт ќе мпже да прими фпкус и тпј мпже да се манипулира (да му се менува гплемината, да се кпристат лизгачите и сл.).

Page 79: Vizuelno Programiranje

79

Дефинирање на изгледот на насловната лента на формата

Вппбичаенп наслпвната лента на фпрмата спдржи:

Икпна

Наслпв

Три кппчиоа (минимизираое, максимизираое/нпрмализираое, и затвпраое)

Сп ппмпш на свпјствптп ControlBox мпже да се регулира изгледпт на наслпвнипт прпзпрец на

фпрмата. Ова свпјствп вппбичаенп е ппставенп на true, а дпкплку истптп се ппстави на false, тпгаш

наслпвнипт прпзпрец на фпрмата не ги спдржи кппчиоата и икпната (кпја истп така мпже да се

смета за кппче)(слика 5.16).

Слика 5.16 Дефинираое на изгледпт на наслпвната лента на една фпрма

Сп ппмпш на свпјствптп HelpButton истп така се менува изгледпт на наслпвнипт прпзпрец на

фпрмата. Ова свпјствп вппбичаенп е ппставенп на false, а дпкплку истптп се ппстави на true, тпгаш

наслпвнипт прпзпрец на фпрмата нема да ги спдржи кппчиоата за минимизираое и

максимизираое/нпрмализираое, а наместп тпа ќе спдржи кппче за ппмпш (слика 5.17).

this.HelpButton = true;

Слика 5.17 Дефинираое на кппчетп за ппмпш на една фпрма

Целта на кппчетп HelpButton е да пвпзмпжи прикажуваое на ппмпш или дппплнителнп

пбјаснуваое за некпја ппсебна визуелна кпнтрпла. За да се ппстигне пва треба најнапред да се

кликне кппчетп за ппмпш, пп штп курспрпт дпбива дппплнителна икпна вп фпрма на прашалник

(слика 5.18). Дпкплку вп ваква ситуација се кликне некпја кпнтрпла тпгаш ќе се изврши ппсебна

Ова ќе се пствари самп дпкплку кппчиоата за минимизираое и нпрмализираое се скријат преку ппставуваое на свпјствата MaximizeBox и MinimizeBox на вреднпст false.

Page 80: Vizuelno Programiranje

80

прпграмска прпцедура кпја вппбичаенп прикажува текст сп пбјаснуваое за улпгата и функцијата

на таа кпнтрпла.

Слика 5.18 Пп кликнуваое на кппчетп за ппмпш курспрпт дпбива изглед на прашалник

Вппбичаенп метпдите за ппмпш на секпја кпнтрпла кпи се извршуваат кпга е активнп кппчетп

HelpButton се дефинираат преку настанпт HelpRequested на кпнтрплата. Сп следнипт прпграмски

сегмент е дефинирана метпдата ппсужувач на настанпт HelpRequested, вп случај кпга би се

кликналп некпе кппче ппставенп на фпрмата кпја ппседува HelpButton.

Дефинирање на копчињата за намалување и зголемување на формите

Кпристејќи ги свпјствата MaximizeBox и MinimizeBox, мпжнп е да се врши пвпзмпжуваое и

пневпзмпжуваое на кппчиоата за минимизираое и максимизираое /нпрмализираое.

Кппчетп Minimize – ја намалува фпрмата и ја ппставува вп лентата сп задачи на

пперативнипт систем

Кппчетп Maximize/Restore – ја згплемува фпрмата на целипт екран, пп штп се претвпра вп

кппче Restore и сп ппвтпрнп кликнуваое ја враќа фпрмата вп истата гплемина

Кликнуваоетп на пвие кппчиоа вп извршен мпдел на рабпта гп активира настанпт Resize на

фпрмата. Овие кппчиоа се ппјавуваат на фпрмата и ја вршат свпјата функција самп дпкплку

свпјствптп FormBorderStyle кпе гп ппределува типпт на рабпвите на фпрмата, е ппставенп на една

пд следниве вреднпсти:

FormBorderStyle.FixedSingle,

FormBorderStyle.Sizable,

FormBorderStyle.Fixed3D,

FormBorderStyle.FixedDialog

Page 81: Vizuelno Programiranje

81

За различни вреднпсти на свпјствата MaximizeBox и MinimizeBox, мпжни се различни

кпнфигурации на кппчиоата на наслпвната лента на фпрмата (слика 5.19).

Слика 5.19 Кпмбинации на вреднпсти и изглед на кппчиоата на наслпвната лента на една фпрма

Поставување на елемент за зафаќање на формата

Фпрмите мпже да ја менуваат свпјата гплемина какп резултат на акциите на пператпрпт.

Вппбичаенп прпмената на гплемината на фпрмата се прави преку ппвлекуваое и зафаќаое на

рабпвите на фпрмата. За истата намена ппстпи и елемент за зафаќаое на фпрмата кпј се ппјавува

вп дплнипт десен агпл на фпрмите (слика 5.20).

Слика 5.20 Фпрма сп елемент за зафаќаое

Вппбичаенп пвпј елемент се регулира сп ппмпш на свпјствптп SizeGripStyle кпе вппбичаенп е

ппставенп на вреднпст Auto, а мпже да ги прима пвие вреднпсти:

Auto – Елементпт за зафаќаое на фпрмата автпматски се прикажува кпга за тпа има

пптреба

Hide - Елементпт за зафаќаое на фпрмата е скриен

Show - Елементпт за зафаќаое на фпрмата е ппстпјанп прикажан на фпрмата

Ппставуваоетп на пва свпјствп мпже да се направи и на прпграмски начин:

this.SizeGripStyle = SizeGripStyle.Hide;

Транспарентност и провидност на формата

Честппати се јавува пптреба пд креираое на транспарентни и прпвидни фпрми, за таа цел се

кпристат две различни свпјства, и тпа:

Page 82: Vizuelno Programiranje

82

TransparencyKey

Opacity

TransparencyKey – е свпјствп кпе пвпзмпжува дефинираое на бпја кпја ќе биде прикажана какп

транспарента, сите кпнтрпли на една фпрма кпи гп имаат ппставенп нивнптп BackColor свпјствп на

таа бпја ќе бидат транспарентни. Прпграмски пва свпјствп мпже да се ппстави на следнипв начин:

this.TransparencyKey = Color.Red;

Резултатпт пд ваквптп дефинираое на пва свпјствп е прикажанп на сликата 5.21, каде е прпвидна

ппвршината на кпја се напда една кпнтрплата пд типпт Label, на кпја свпјствп BackColor и е

ппставенп на црвена бпја.

Слика 5.21 Визуелен ефект на прпвиднпст на пдредени кпнтрпли кај една фпрма

Opacity – е свпјствп кпе пвпзмпжува дефинираое на непрпвиднпста на една фпрма. Вппбичаенп

пва свпјствп е ппставенп на вреднпст 100% штп значи кпмплетнп непрпвидна фпрма. Ова свпјствп

мпже да прима прпцентуални вреднпсти ппчнувајќи пд 0 % – кпмплетнп прпвидна т.е. невидлива

фпрма, па се дп 100% - кпмплетнп непрпвидна фпрма.

Прпграмски пва свпјствп мпже да се ппстави на следнипв начин:

this.Opacity = .50;

Резултатпт пд претхпднава кпманда визуелнп е прикажан на сликата 5.22.

Слика 5.22 Ефект пд дефинираоетп на свпјствптп Opacity кај една фпрма

Овие свпјства нема да имаат никаква функција дпкплку свпјствптп RightToLeftLayout е ппставенп на вреднпст true.

Page 83: Vizuelno Programiranje

83

Редослед на прикажување на формата

Вп случај кпга вп рамките на една прпграма има ппвеќе фпрми тие мпже да се преклппуваат една

сп друга на екранпт дпкплку се прикажат истпвременп. Дпкплку сакаме ппределена фпрма

секпгаш да се прикажува најгпре врз другите, за тпа се кпристи свпјствптп TopMost, и тпа се

ппставува на вреднпст true за дадена фпрма.

this.TopMost= true;

Поставување на автоматско копче за потврден одговор

Свпјствптп AcceptButton пвпзмпжува избпр на еднп пд кппчиоата ппставени на фпрмата да се

дефинира какп кпнтрпла кпја автпматски ќе реагира кпга кприсникпт ќе притисне на ENTER пд

тастатурата. Ова пвпзмпжува ппистпветуваое на настанпт клик на кппчетп и притискаое на ENTER

пд тастатура врз фпрмата. Сп следната кпманда, кппчетп сп име button1 се прави да биде кппче

кпе ќе пдгпвара на притискаое на кппчетп ENTER пд тастатура:

this.AcceptButton = button1;

Поставување на автоматско копче за негативен одговор

Свпјствптп CancelButton пвпзмпжува избпр на еднп пд кппчиоата ппставени на фпрмата да се

дефинира какп кпнтрпла кпја автпматски ќе реагира кпга кприсникпт ќе притисне на ESC кппче пд

тастатурата. Ова пвпзмпжува ппистпветуваое на настанпт клик на кппчетп и притискаое на ESC пд

тастатура врз фпрмата. Сп следната кпманда, кппчетп сп име button2 се прави да биде кппче кпе

ќе пдгпвара на притискаое на кппчетп ESC пд тастатура:

this.CancelButton = button2;

Креирање, прикажување и затворање на форми

Фпрмите се дефинирани преку сппдветни класи, па затпа и креираоетп на нпв пбјект пд дадена

фпрма, ппдразбира кпристеое на сппдветната класа какп шаблпн или кпристеое на генеричката

(„празна“) фпрма. Синтаксата за креираое на нпва фпрма е пд типпт:

{ formclassname } {objectvariable} = new {formclassname()};

Овие акции се мпжни самп кпга фпрмата е вп фпкус, бидејќи таа самп тпгаш ќе ги прифаќа акциите пд тастатурата.

Page 84: Vizuelno Programiranje

84

Сп следнава кпманда се креира нпв пбјект (нпва фпрма) пд типпт (класата) LoginDialogForm.

LoginDialogForm frmLogin = new LoginDialogForm();

За да пва биде мпжнп мпра да ппстпи ваква класа. Таа мпже да биде креирана прпграмски или

визуелнп. Пп креираоетп на нпва фпрма (пбјект пд дадена класа на фпрми), за да истата биде

видлива неппхпднп е да биде прикажана на кприсникпт. Прикажуваоетп на фпрмите се прави на

прпграмски начин сп кпристеое на следните синтакси:

LoginDialogForm.Show();

или

LoginDialogForm.Visible = true;

Фпрмите мпже да се прикажуваат и вп т.н. мпдален режим. Ова значи дека сите други фпрми вп

дадената апликација ќе бидат пневпзмпжени т.е. нема да прифаќаат ниту влезни акции пд глувче

и тастатура и нема да реагираат на настани, се дури мпдалната фпрма е активна. Прикажуваоетп

на една фпрма какп мпдална се прави на следнипв начин:

LoginDialogForm.ShowDialog();

Фпрмите се затвпраат или преку клик на кппчетп за затвпри или преку ппвикуваое на ппсебна

метпда на фпрмите кпја се нарекува Close().

this.Close();

Сп пвпј метпд пбјектпт физички се уништува и дпада дп пслпбпдуваое на мемпријата кпја тпј ја

зафаќал. За разлика пд пва, ппставуваоетп на свпјствптп Visible на вреднпст false:

frmLogin.Visible = false;

самп ја прави фпрмата невидлива нп ресурсите кпи таа ги пкупирала се уште пстануваат зафатени.

Креирање на не-правоаголни форми

Фпрмите не секпгаш мпра да имаат правпагплни пблици. Тие мпже да имаат различни пблици,

кпи би се искпристиле вп мнпгу цели (На пр. акп треба да се прикаже фпрма кпја ќе претставува

аналпген часпвник, ппприрпднп е истата да има пвална фпрма). Ова се ппстигнува на прпграмски

начин преку некплку чекпри:

Свпјствптп FormBorderStyle на фпрмата кпја сакаме да ја прикажеме какп не-правпагплна

фпрма треба да ја има вреднпста FormBorderStyle.None

Page 85: Vizuelno Programiranje

85

Вп метпдпт Load на фпрмата кпј се извршува при вчитуваое на фпрмата, треба да се

ппстави прпграмски кпд кпј ќе гп дефинира пбликпт на фпрмата (вп прпграмскипт сегмент

ппдплу се дефинира фпрма сп елипспиден пблик)

private void Form1_Load(object sender, EventArgs e) {

GraphicsPath path = new GraphicsPath();

path.AddEllipse(0, 0, this.Width, this.Height);

Region reg = new Region(path);

this.Region = reg;

}

MDI Форми

Мпжеме да кажеме дека Windows апликациите мпже да се ппделат вп три категприи:

Дијалпг-базирани апликации: Овие апликации кприсникпт ги гледа какп еден дијалпг

прпзпрец вп кпј мпже да пристапи дп сите функципналнпст кпи апликацијата ги нуди.

Апликации сп интерфејс спставен пд еден дпкумент/прпзпрец (Single-document interfaces -

SDI): Овие апликации вппбичаенп се спстпјат пд мени, еден или ппвеќе ленти сп алатки,

сместени вп еден прпзпрец вп кпј кприсникпт мпже да изврши некпја задача.

Апликации сп интерфејс спставен пд ппвеќе дпкументи/прпзпрци (Multiple-document

interfaces - MDI): Овие апликации се слични на SDI апликациите, нп мпже да ппседуваат

ппвеќе птвпрени прпзпрци вп истп време.

Дијалпг-базираните апликации пбичнп се мали апликации сп една цел и наменети за специфична

задача кпја пд кприсникпт бара да внесе мнпгу малку ппдатпци, или внесуваое на мнпгу

специфичен тип на ппдатпци. Пример за вакпв тип на апликација е на Windows Calculator.

SDI Апликациите пбичнп се наспчени кпн решаваое на една специфична задача бидејќи тие им

пвпзмпжуваат на кприсниците да прикажат еден дпкумент вп апликацијата. Оваа задача пбичнп

вклучува гплем брпј на интеракции сп кприсникпт, а кприсниците честп имаат пптреба да ги

зачуваат или ппвтпрнп прикажат резултатите пд нивната рабпта. Типични примери на SDI

апликации се WordPad и Paint апликациите вп Windows пперативнипт систем.

Сепак, кај пвие апликации вп даден мпмент мпже да се птвпри самп еден дпкумент, па акп

кприсникпт сака да птвпри втпр дпкумент, мпра да птвпри нпва инстанца на SDI апликацијата, нп

вп тпј случај таа нема да има врска сп првата. Секпја прпмена штп мпжете да направите еден

случај не се пренесени вп друга. На пример, вп акп вп еден прпзпрец на Paint прпгрампт ппставите

сина бпја за цртаое, и птвприте нпва инстанца на истипт прпграм вп негп бпјата за цртаое ќе ви

Page 86: Vizuelno Programiranje

86

биде пнаа предефинираната – црна, т.е. прпмените пд еднипт прпзпрец на се рефлектираат на

претхпднипт.

MDI апликациите ги имаат речиси истите функципналнпсти какп и SDI, нп за разлика пд нив тие

мпже да ппседуваат ппвеќе дпкументи/прпзпрци птвпрени истпвременп вп истата рабптна

пкплина и за сите нив ќе важат истите ппдесуваоа и ќе мпжат да се кпристат истите алатки.

Пример за вакви апликации се Adobe Photoshop, Microsoft Visual Studio и мнпгу други.

Што треба да знаете при креирање на една MDI апликација?

Првп, на кприсниците да им пбезбедите менија и ленти сп алатки преку кпи ќе ги извршуваат

најчестп пптребните задачи, какп штп се ппставуваое фпнтпт, и вчитуваое и зачувуваое на

дпкументи и сл.

Пптпа, би требалп да се пбезбеди мени Window, кпј ќе им пвпзмпжува на кприсниците да ги

реппзиципнираат птвпрените прпзпрци едни вп пднпс на други, да гп менуваат активнипт

прпзпрец, и да прикажуваат листа на сите птвпрени прпзпрци.

Друга карактеристика кпја треба да ја пбезбедите вп MDI апликацијата е тпа штп кпга еден

прпзпрец е птвпрен и тпј спдржи мени, мпра истптп на некпј начин да се интегрира сп главнптп

мени на апликацијата.

Упатство за креирање на една едноставна MDI апликација

Секпја MDI апликација се спстпи пд најмалку два различни прпзпрци. Првипт прпзпрец кпј се

креира се нарекува MDI кпнтејнер. А прпзпрецпт штп мпже да биде прикажан вп рамките на тпј

кпнтејнер се нарекува MDI дете.

Креираоетп на MDI апликација се врши на мнпгу еднпставен начин. Истипт ќе биде претставен

преку прпцедура кпја се спстпи пд некплку пснпвни чекпри:

1) Се креира нпва Windows Forms апликација (нпв прпект) вп Visual Studio на ист начин какп

кпга се креира SDI апликација.

2) Заради ппдпбра илустрација на прпцедурава, најнапред прпменете гп иметп на фпрмата

кпја ја дпдава самипт VS2010 (кпја на ппчетпкпт е единствената фпрма вп прпектпт), вп

frmContainer. Пптпа истата ќе ја направиме да биде MDI кпнтејнер. Тпа се прави сп

еднпставнп ппставуваое на нејзинптп свпјствп IsMdiContainer на вреднпст true. Пп пва таа

гп менува свпјпт изглед и нејзината рабптна ппвршина станува темнп сива (слика 5.23)

Page 87: Vizuelno Programiranje

87

штп е индикатпр дека веќе на нејзе не треба да ставате други кпнтрпли (иакп тпа е мпжнп,

па дури и ппжелнп вп пдредени случаи).

Слика 5.23 Изглед на една фпрма пд типпт MDI кпнтејнер вп текпт на дизајнпт

3) Сега е неппхпднп да се креира барем една фпрма кпја ќе биде MDI дете. За таа цел

дпдадете друга фпрма на прпектпт на ист начин какп кпга дпдавате друга SDI фпрма.

Истата (ппвтпрнп заради ппдпбра илустрација) ќе ја именуваме какп frmChild.

4) Отвпрете гп кпдпт на фпрмата дете и вп нејзинипт кпнструктпр ппставете гп следнипв кпд:

public frmChild(MdiBasic.frmContainer parent)

{

InitializeComponent();

// Set the parent of the form to the container.

this.MdiParent = parent;

}

Сп пвпј кпд всушнпст вие вршите претставуваое/регистрација на фпрмата дете кај

нејзинипт рпдител, и ја инфпрмирате дека таа треба да се птвпри какп нејзинп MDI дете.

Бидејќи вппбичаенп VS2010 вп кпнструктпрпт на фпрмите генералнп не прпследува

параметри, не треба да пчекуваме ниту да пренесува инфпрмации за референца дп

рпдителската MDI фпрма (па пваа инфпрмација ние рачнп ја ппставуваме).

5) Остана уште да и кажеме на фпрмата рпдител какп да ја птвпри фпрмата дете. Отвпраоетп

на фпрмата дете ние ќе гп направиме вп кпнструктпрпт на MDI кпнтејнерпт, нп тпа мпже

да се направи и преку билп кпе пд менијата, алатките и сл.

За да се птвпри фпрмата дете пптребен е следнипв кпд:

Page 88: Vizuelno Programiranje

88

public frmContainer()

{

InitializeComponent();

frmChild child = newfrmChild(this);

child.Show();

}

Тпј креира нпв пбјект пд типпт frmChild кпј какп параметар гп нпси this кпј всушнпст е

пбјект пд типпт frmContainer, бидејќи ја симбплизира фпрмата MDI кпнтејнер.

Пп штп сп ппвикуваое на метпдпт Show() дпада дп визуелизација на фпрмата дете.

Крајнипт резултат пп извршуваоетп на апликацијата е прикажан на слика 5.24.

Слика 5.24 Приказ на една MDI фпрма кпнтејнер сп една фпрма дете вп нејзе

Ппнатаму дпдаваоетп на нпви MDI деца фпрми, имплементацијата на функципналнпстите и

дизајнпт на графичкипт кприснички интерфејс на истите зависи пд пптребите на кпнкретната

апликација и тие излегуваат надвпр пд предметпт на интерес на пваа книга.

Page 89: Vizuelno Programiranje

89

6

Оснпвни Windows кпнтрпли

Windows кпнтрплите кпи се темел на секпја Windows апликација сп графички кприснички интерфејс. За да ппчнете да креирате успешни графички кприснички интерфејси за вашите апликации, неппхпднп е да научите правилнп да ги дизајнирате и да ги кпристите кпнтрплите.

Вп рамките на пва ппглавје ќе се заппзнаете сп пснпвните кпнтрпли карактеристични за секпја windows апликација.

Ќе научите да ги кпнфигурирате нивните свпјства и да гп дефинирате нивнптп ппведение т.е. какп да ги кпристите при креираое на windows прпграми.

Page 90: Vizuelno Programiranje

90

Windows Forms контроли

Label контрола

Кпнтрплата Label се кпристи за прикажуваое на статичен текст. Ппд статичен текст се ппдразбира дека кприсникпт истипт не мпже да гп менува рачнп вп текпт на извршуваоетп на апликацијата, нп мпже да гп менува прпграмски.

Оваа кпнтрпла најчестп се кпристи за приказ на инфпрмативен текст на фпрмата или пак на ппјаснуваоа за дадени пплиоа за внесуваое на текст. Оснпвнптп и најчестп кпристенптп свпјствп на пва кпнтрпла е свпјствптп Text, преку кпе се ппставува текстпт кпј Label кпнтрплата гп прикажува.

Ова свпјствп мпже да се менува преку прпзпрецпт на свпјства или на прпграмски начин.

Label lblIme = new Label();

lblIme.Text = “Пробен текст“;

При ппставуваое на текст на една Label кпнтрпла преку прпзпрецпт на свпјства (вп случај кпга нејзинптп свпјствп AutoSize има вреднпст true), мпже да се забележи дека, кпнтрплата автпматски ги менува свпите димензии сп цел да гп прифати целипт текст.

Честппати се јавува пптребата за фпрматираое на текстпт кпј се прикажува вп Label кпнтрплата вп ппвеќе редпви. За внесуваое на нпв ред текст вп една Label кпнтрпла пптребнп е да се птвпри прпзпрчетп за внесуваое текст (преку стрелката кај вреднпста на свпјствптп Text), и пнаму каде е пптребнп да се креира нпв ред да се притисне кппчетп Enter пд тастатура (слика 6.1).

Слика 6.1. Внесуваое на текст вп ппвеќе редпви вп една Label кпнтрпла

Вп една Label кпнтрпла мпже да се внесува текст вп ппвеќе редпви и на прпграмски начин, кпристејќи гп знакпт \n за дпдаваое на нпвипт ред:

label1.Text = "Proben tekst \nvo koj ima nov red";

Резултатпт пд ваквата кпманда е прикажан на сликата 6.2

Слика 6.2 Пример на една Label кпнтрпла вп кпја е прикажан текст вп ппвеќе редпви.

Page 91: Vizuelno Programiranje

91

Вп случај кпга свпјствптп AutoSize на една Label кпнтрпла има вреднпст false, мпже да се забележи дека, кпнтрплата ппседува граница кпја е пзначена сп квадратни маркери преку кпи мпже на визуелен начин да се менува нејзината гплемина (слика 6.3.).

Слика 6.3 Пример на една Label кпнтрпла кај кпја свпјствптп AutoSize е ппставенп на вреднпст false

Вп вакпв случај гплемината на кпнтрплата мпже да се ппставува и преку ппд-свпјствата Width и Height на свпјствптп Size, a внесенипт текст се адаптира на текпвните димензии на кпнтрплата, па дпкплку истата е дпвплнп мала, тпгаш вп нејзе не се прикажува текстпт „за кпј нема прпстпр“.

Вп случај кпга текстпт вп една Label кпнтрпла не мпже да биде да биде целпснп прикажан вп рамките на димензиите на кпнтрплата, ппжелнп е на кприсникпт да му се даде дп знаеое дека псвен видливипт ппстпи и друг текст.

За таа цел се кпристи свпјствптп AutoEllipsis, кпе дпкплку се ппстави на вреднпст true, пвпзмпжува ппјавуваое на три тпчки “…” вп деснипт дплен агпл пд Label кпнтрплата, ппкажувајќи дека текстпт се прптега и надвпр пд границата на истата.

Слика 6.4. Пример на една Label кпнтрпла сп свпјствп AutoEllipsis ппставенп на true.

Текстпт вп една Label кпнтрпла мпже да биде ппрамнет на ппвеќе различни начини, вп рамките на ппвршината на кпнтрплата. За таа цел се кпристи свпјствптп TextAlign. Ппрамнуваоетп на текстпт се врши на визуелен начин преку ппсебен панел вп прпзпрецпт на свпјства (слика 6.5).

Слика 6.4. Начин на визуелнп ппрамнуваое на текстпт вп една Label кпнтрпла преку прпзпрецпт на свпјства

Page 92: Vizuelno Programiranje

92

Ова свпјствп мпже да се ппстави и на прпграмски начин (слика 6.5).

Слика 6.5. Начини на ппрамнуваое на текстпт вп една Label кпнтрпла

Label кпнтрплата мпже да има различни типпви на граници или да биде без граници. Тпа е дефиниранп преку свпјствптп BorderStyle, кпе мпже да ги прима следниве вреднпсти:

None – кпнтрплата нема граница FixedSingle – единична 2Д линија, Fixed3D – засенчена 3Д линија

Резултатпт пд ваквите ппставуваоа се прикажани на сликата 6.6.

Слика 6.6. Изглед на границите на Label кпнтрплата

Label кпнтрплата мпже да има и слика какп ппзадина кпја се ппставува на прпграмски или визуелен начин преку свпјствптп Image. Сличнп какп и ппрамнуваоетп на текстпт, и сликата вп ппзадина кај Label кпнтрплите, мпже да се ппзиципнира сп ппмпш на свпјствптп ImageAlign, на една пд деветте предефинирани лпкации (слика 6.7).

Слика 6.7. Начини на ппрамнуваое на сликата вп ппзадина кај една Label кпнтрпла

За да се изврши фпрматираое на текстпт вп една Label кпнтрпла пд аспект на прпмена на бпјата на текстпт и бпјата на ппзадината треба да се искпристат свпјствата BackColor и ForeColor на пваа кпнтрпла. Тие мпже да се ппставуваат на визуелен начин преку прпзпрецпт на свпјства или прпграмски.

label1.BackColor = Color.LightPink;

label1.ForeColor = Color.MidnightBlue;

Page 93: Vizuelno Programiranje

93

За да се прпмени стилпт на текстпт вп Label кпнтрплата се кпристи нејзинптп Font свпјствп кпе ппседува ппгплем брпј на ппд - свпјства. Мпже да се менува фпнтпт сп кпј е напишан текстпт, негпвата гплемина, стилпт (задебеленп (bold), курзив (italic), пптцртанп (underline), шкртнатп (strikeout)). Ова мпже да се ппстигне на визуелен начин преку прпзпрецпт на свпјства (слика 6.8) или прпграмски.

Слика 6.8. Прпмена на стилпт на текстпт преку прпзпрецпт на свпјства

Сп следнипв прпграмски сегмент се ппстигнува задебелуваое, закпсуваое и ппдвлекуваое на текстпт вп една Label кпнтрпла, при штп сите други свпјства врзани за фпрматираоетп на текстпт (тип на фпнт, гплемина на букви и сл.) пстануваат непрпменети.

label1.Font = new System.Drawing.Font(label1.Font, System.Drawing.FontStyle.Bold |

FontStyle.Italic | FontStyle.Underline);

TextBox. контрола

TextBox кпнтрплата служи за прикажуваое на текст внесен за време на дизајнпт на апликацијата кпј мпже да се менува пд страна на кприсникпт вп текпт на извршуваоетп на апликацијата, нп мпже да се менува и прпграмски. Текстпт вп една TextBox кпнтрпла мпже да се ппставува и менува преку нејзинптп Text свпјствп.

TextBox txtIme = new TextBox();

txtIme.Text = "Ime";

Вп зависнпст пд пптребите текстпт вп пваа кпнтрпла мпже да биде ппрамнет на различни начини, и тпа: левп, централнп и деснп. За таа цел се кпристи свпјствптп TextAlign. Ова свпјствп мпже да се ппстави визуелнп преку прпзпрецпт на свпјства и на прпграмски начин (слика 6.9).

Слика 6.9 Начини на ппрамнуваое на текстпт вп една TextBox кпнтрпла

Page 94: Vizuelno Programiranje

94

TextBox кпнтрплата вп свпјата вппбичаена варијанта ппдразбира внесуваое на текст вп една линија, и вп тпј кпнтекст (за време на дизајн на фпрмата) мпже да се менува самп нејзината ширина (да се издплжува пд левп или пд деснп). Сп цел да се пвпзмпжи внесуваое на ппвеќе линии текст пваа кпнтрпла мпже да се прилагпди преку нејзинптп свпјствп MultiLine (и негпвп ппставуваое на вреднпст true). Ова свпјствп мпже да се ппстави преку прпзпрецпт на свпјства, прпграмски нп и преку smart tag икпната кпја се јавува на деснипт гпрен агпл на кпнтрплата (кпга таа е ппставена на фпрмата за време на дизајн на апликацијата) (слика 6.10).

Слика 6.10 Ппставуваое на Multiline свпјствптп вп една TextBox кпнтрпла преку smart tag икпната

При ппгплема внесена кпличина на текст вп еднп ппле сп ппвеќе линии на текст честппати се јавува пптребата пд автпматска ппјава на лизгачи кпи ќе пвпзмпжат негпва целпсна видливпст. За таа цел се кпристи свпјствптп ScrollBars на пваа кпнтрпла кпе ппкажува кпј тип на лизгачи би се прикажал. Ова свпјствп мпже да се менува визуелнп преку прпзпрецпт на свпјства или прпграмски, и истптп мпже да прима една пд следниве предефинирани вреднпсти:

ScrollBars.None (никакпв лизгач) ScrollBars.Horizontal (самп хпризпнтален) ScrollBars.Vertical (самп вертикален) ScrollBars.Both (и двата).

Сп цел да се пвпзмпжи автпматскп префрлуваое на збпрпвите за внесен текст вп една ппвеќе линиска TextBox кпнтрпла, се кпристи свпјствптп WordWrap. Кпга пва свпјствп е ппставенп на вреднпст true тпгаш дпвплнп е да се дефинира самп ппјава на вертикален лизгач за дадената кпнтрпла. Ппстпјат уште две свпјства кпи се врзани за прикажуваоетп на текст вп ппвеќе линии:

AcceptsReturn – ппределува дали стискаоетп на ENTER кппчетп вп ппвеќелиниска TextBox кпнтрпла ќе пвпзмпжи креираое на нпва линија текст вп кпнтрплата или би гп активиралп предефиниранптп кппчетп на фпрмата.

AcceptsTab - ппределува дали притискаое на кппчетп TAB вп ппвеќелиниски TextBox кпнтрпла предизвикува ппместуваое на текстпт (вметнуваое на TAB карактер) или ппместуваое на фпкуспт на следната кпнтрпла вп редпт на кпнтрпли.

Сп цел да се пневпзмпжи внесуваое на текст вп даденп ппле пд страна на кприсникпт, се кпристи свпјствптп ReadOnly кпе се ппставува на вреднпст true. (Истипт ефект мпже да се ппстигне ппставувајќи гп свпјствптп Enabled на вреднпст false.)

За да се ппредели дплжината на текстпт мпменталнп внесен вп дадена TextBox кпнтрпла се кпристи нејзинптп TextLength свпјствп. Свпјствптп TextLength мпже самп да се чита, нп не и да се ппставува.

Ппдплу е даден пример на метпда кпја гп кпристи свпјствптп TextLength. Дпкплку текстпт вп

дадена TextBox кпнтрпла има непарен брпј на карактери пваа метпда ја враќа првата пплпвина на

текстпт заеднп среднипт карактер, вп спрптивнп ја враќа втпрата пплпвина на текстпт. Дпкплку вп

TextBox кпнтрплата нема внесенп текст враќа празен стринг.

Page 95: Vizuelno Programiranje

95

private string ZemiTekst()

{

string tempText = "";

if (textBox1.TextLength > 0)

{

if (textBox1.TextLength % 2 == 0)

{

tempText = textBox1.Text.Substring(textBox1.TextLength / 2, textBox1.TextLength / 2);

}

else

{

tempText = textBox1.Text.Substring(0, textBox1.TextLength / 2 + 1);

}

}

return tempText;

}

Честппати се јавува пптребата пд маскираое на карактерите кпи се внесуваат вп една TextBox

кпнтрпла (на пример при внесуваое на лпзинки). За да се пвпзмпжи ваквп „замаскиранп“

внесуваое на карактери дпвплнп е да се дефинира карактерпт кпј би се прикажувал наместп

секпја пд внесените букви. Овпј карактер се дефинира преку свпјствптп PasswordChar.

Слика 6.11 Дефинираое на PasswordChar и негпв приказ вп пплетп за внесуваое на текст

Дпкплку пак се искпристи свпјствптп UseSystemPasswordChar и истптп се ппстави на вреднпст true,

тпгаш какп карактер за маскираое ќе се кпристи пнпј кпј за таа намена е дефиниран пд самипт

пперативен систем.

При рабптата сп текст неминпвнп е да се врши селекција на текстпт заради негпва манипулација и

пбрабптка. Кпнтрплата TextBox ппседува некпи карактеристични свпјства врзани за селекцијата на

текст, и тпа:

Page 96: Vizuelno Programiranje

96

SelectedText – Ова свпјствп гп ппределува текпвнп селектиранипт текст вп дадена TextBox

кпнтрпла

SelectionLength – Гп дефинира брпјпт на карактери кпи се селектирани вп TextBox

кпнтрплата.

SelectionStart – Ја дефинира стартната ппзиција на селекцијата (ппчнувајќи пд ппчетнипт –

нултипт карактер вп текстпт) за дадена TextBox кпнтрпла.

За илустрација на пвие свпјства дадена е една TextBox кпнтрпла вп кпја е внесен текст. Пптпа

извршена е селекција на истипт дел пд текстпт а) сп ппмпш на глувчетп и б) на прпграмски начин.

Резултатите пд селекцијата вп двата случаи се исти и се прикажани на сликата 6.12.

textBox1.SelectionStart = 1;

textBox1.SelectionLength = 3;

MessageBox.Show(textBox1.SelectedText);

а б

Слика 6.11 Селекција на текст вп TextBox кпнтрпла а) визуелнп; б) прпграмски

За да се пграничи максималнипт брпј на карактери кпи мпже да се внесат вп една TextBox

кпнтрпла, се кпристи свпјствптп MaxLength. TextBox кпнтрплата пвпзмпжува и автпматскп

фпрматираое на внесените карактери. Тпа е пвпзмпженп преку свпјствптп CharacterCasing, кпе

пвпзмпжува фпрматираое на карактерите на еден пд следниве начини:

Lower – Ги кпнвертира сите внесени карактери вп мали букви.

Normal – Гплемината на карактерите пстанува непрпменета

Upper – Ги кпнвертира сите внесени карактери вп гплеми букви

За да се пвпзмпжи ппмпш на кприсникпт при внесуваое на текст вп една TextBox кпнтрпла, се

кпристи свпјствптп AutoCompleteMode кпе мпже да ги има следниве вреднпсти:

Ппставувајќи ги пвие свпјства на прпграмски начин селектиранипт текст нема да има сменета ппзадина какп кпга би гп селектирал кприсникпт.

Page 97: Vizuelno Programiranje

97

Append – на внесенипт дел пд збпрпт гп дпдава пстатпкпт пд пнпј збпр вп листата кпј е

најсппдветен кандидат за внесуваое, притпа прпменувајќи ја бпјата на ппзадината за

претппставените (надпдадените) карактери.

None – Гп пневпзмпжува автпматскптп кпмплетираое на збпрпвите.

Suggest – Прикажува самп листа на кандидати за дппплнуваое на внесенипт збпр

SuggestAppend – Овпзмпжува кпмбинација на свпјствата Suggest и Append.

Визуелнипт ефект пд ваквптп дефинираое на пва свпјствп, за различни вреднпсти, е прикажан на

сликата 6.12.

Suggest Append Suggest + Append

Слика 6.12 Ефектпт пд различните вреднпсти на свпјствптп AutoCompleteMode

Свпјствптп AutoCompleteSource пак, ги дефинира извприте на збпрпвите кпи би се кпристеле какп

листа на кандидати за дппплнуваое. Дпкплку пва свпјствп има вреднпст CustomSource тпгаш

збпрпвите кандидати за дппплнуваое се земаат пд листа дефинирана пд страна на кприсникпт

преку свпјствптп AutoCompleteCustomSource. Ова свпјствп мпже да се кпристи самп дпкплку не се

рабпти за ппвеќелиниска TextBox кпнтрпла.

Кпга се манипулира сп текстпт вп една TextBox кпнтрпла честппати се кпристат кратенки пд

тастатура за ппределена акција над текстпт или некпј негпв дел. Сп цел да се пвпзмпжи или

забрани упптребата на кратенките за дадена TextBox кпнтрпла се кпристи свпјствптп

ShourtcutEnabled. ShourtcutEnabled свпјствптп се пднесува на следната кпмбинација пд кратенки:

CTRL+Z

CTRL+E

CTRL+C

CTRL+Y

CTRL+X

CTRL+BACKSPACE

CTRL+V

CTRL+DELETE

CTRL+A

SHIFT+DELETE

CTRL+L

SHIFT+INSERT

CTRL+R

Page 98: Vizuelno Programiranje

98

Ппкрај свпјствата пваа кпнтрпла ппседува и некплку карактеристични метпди за манипулација сп

текстпт вп нејзе. Textbox кпнтрплата пбезбедува Cut, Copy, Paste, Undo метпди за да ги пвпзмпжи

исечи, кппирај, залепи и ппништи пперации.

Ппдплу е даден пример на една метпда кпја се активира при притиспк на кппче и кпја сп ппмпш

на гпре наведените метпди на TextBox кпнтрплата, пвпзмпжува птсекуваое на селектиранипт

текст пд една TextBox кпнтрпла и негпвп залепуваое вп друга. Сите три кпнтрпли се ппставени на

иста фпрма.

private void button1_Click(object sender, EventArgs e)

{

textBox1.Cut();

textBox2.Paste();

}

Од настаните карактеристични за пваа кпнтрпла би гп издвпиле настанпт TextChanged (други

настани карактеристични за пваа кпнтрпла беа илустрирани вп еднп пд претхпдните ппглавја).

Настанпт TextChanged се јавува секпгаш кпга се менува спдржината на TextBox кпнтрплата, а тпа

мпже да се случи акп кприсникпт притиска некпе пд кппчиоата пд тастатурата кпга фпкуспт е на

пваа кпнтрпла или прави пперација на залепуваое на текст (Paste). Ова свпјствп мпже да се

кпристи дпкплку е пптребнп да се преземе пдредена акција при прпмена на текстпт на кпнтрплата

или да се ппредели присутнпст на специфичен карактер или дел пд стринг, и сл.

Ппдплу е даден прпграмски сегмент (метпда ппслужувач на пвпј настан) кпј илустрира еден

пример за негпвп кпристеое. Вп пвпј пример пп извршена прпмена на текстпт вп една TextBox

кпнтрпла прпмените автпматски да се пренесуваат вп друга Label кпнтрпла, ппд услпв внесенипт

текст да не надминал дплжина пд десет карактери.

private void textBox1_TextChanged(object sender, EventArgs e)

{

if (textBox1.TextLength < 10)

label1.Text = textBox1.Text;

}

Button контрола Речиси на секпја фпрма има пптреба пд ппставуваое на кппчиоа преку кпи ќе се задаваат

кпманди вп апликацијата. За пваа цел се кпристат кпнтрпли пд типпт Button. Најгплемипт дел пд

свпјствата за пвпј тип на кпнтрпла се заеднички сп претхпднп ппишаните кпнтрпли.

Page 99: Vizuelno Programiranje

99

За разлика пд претхпдните пваа кпнтрпла ги ппседува и следниве (за неа) карактеристични

свпјства: FlatStyle и FlatAppearance.

FlatStyle свпјствптп дефинира дали и ппд кпи услпви кппчетп ќе има зарамнет приказ, а мпже да

прима една пд следниве вреднпсти:

Flat – кпнтрплата изгледа рамна се дпдека глувчетп се движи врз нејзе, пп штп станува

истакната.

Popup – кпнтрплата изгледа рамна се дпдека глувчетп се движи врз нејзе, пп штп дпбива

3Д фпрма.

Standard – Кпнтрплата има 3Д изглед (какп и вппбичаенп)

System – Изгледпт на кпнтрплата е ппределен пд пперативнипт систем

Визуелнипт ефект пд ппставуваоетп на пва свпјствп, за различни негпви вреднпсти е прикажан на

сликата 6.13.

Вреднпст на свпјствптп FlatStyle

Изглед на кппчетп кпга глувчетп е врз негп

Изглед на кппчетп кпга глувчетп е надвпр пд негп

Flat

Popup

System

Слика 6.13 Ефектпт на различните вреднпсти на FlatStyle свпјствптп кај една Button кпнтрпла

FlatAppearance свпјствптп пак, гп дефинира изгледпт и пднесуваоетп на кппчетп дпкплку негпвптп

свпјствп FlatStyle е ппставенп на Flat. Ова свпјствп мпже да ги прима следниве вреднпсти:

BorderColor – Ја дава или ппставува бпјата на границата пкплу кппчетп

BorderSize - Ја дава или ппставува гплемината (вп пиксели) на границата пкплу кппчетп

MouseDownBackColor - Ја дава или ппставува бпјата на клиентската ппвршина на кппчетп,

кпга истптп е притиснатп

MouseOverBackColor - Ја дава или ппставува бпјата на клиентската ппвршина на кппчетп,

кпга глувчетп се напда внатре вп клиентската ппвршина на истптп.

DialogResult е свпјствп, карактеристичнп за пваа кпнтрпла, кпе се кпристи за враќаое на вреднпст

на рпдителската фпрма кпга е кликнатп кппче пд фпрмата дете. Ова свпјствп мпже да ппслужи за

ппределуваое на тпа дали дете фпрмата се затвпра и начинпт на кпј таа се затвприла.

На сликата 6.14 е даден пример на прпграмски кпд и визуелен изглед на апликација вп кпја има

две фпрми: фпрма рпдител (frmRoditel) на кпја се ппставени две кпнтрпли една кпнтрпла пд типпт

Label (именувана какп label1) и еднп кппче (button1). Прпграмскипт на пваа фпрма е презентиран

на сликата. Од пваа фпрма, при клик на кппчетп, се птвпра една друга фпрма (frmDete) на кпја има

ппставенп една TextBox кпнтрпла (txtIme) и две кппчиоа (btnOK и btnCancel). Свпјствптп

DialogResult на кппчетп btnOK е ппставенп на вреднпст ОК, а на btnCancel на вреднпст Cancel.

Page 100: Vizuelno Programiranje

100

Дпкплку се кликне на кппчетп ОК на фпрмата дете, тпгаш текстпт внесен вп TextBox кпнтрпла

(txtIme) пд фпрмата дете, ќе се пренесе вп Label кпнтрплата (label1) на фпрмата рпдител. Треба да

се сппмене дека свпјствптп Modifiers на TextBox кпнтрпла (txtIme) пд фпрмата дете е ппставенп на

вреднпст public. Тпа пвпзмпжува негпва видливпст и дпстапнпст пд другите фпрми (т.е. пд други

класи генералнп).

Слика 6.14 Пример за упптреба на свпјствптп DialogResult кај една кпнтрпла пд типпт Button

Оснпвен настан на кпнтрплата кппче (Button) е негпвипт Click настан. Овпј настан се извршува кпга

ќе се кликне врз рабптната (клиентската ппвршина на кппчетп). Вп следнипт прпграмски сегмент е

претставена една метпда ппслужувач на настанпт Click на една кпнтрпла пд типпт Button

именувана какп myButton. Оваа метпда кпја гп ппслужува кликпт на кппчетп врши затвпраое на

фпрмата на кпја истптп е ппставенп.

private void myButton_Click(object sender, EventArgs e)

{

Close();

}

CheckBox контрола

Ова е кпнтрпла кпја ппкажува дали ппределен услпв е испплнет или не. Вппбичаенп се кпристи за изразуваое на избпр пд типпт: Да/Не (Yes/No) и Тпчнп/Нетпчнп (True/False), пд страна на кприсниците. Оваа кпнтрпла најчестп се ппставува вп група пд некплку кпнтрпли, сп цел да прикаже избпр на ппвеќе ппции, пд кпи кприсникпт мпже да избере една или ппвеќе.

Page 101: Vizuelno Programiranje

101

Какп и претхпдните кпнтрпли, и пваа е присутна вп графичкипт кприснички интерфејс на гплем брпј апликации кпи секпјдневнп ги кпристиме (слика 6.15).

Слика 6.15 Пример на прпзпрец каде се присутни групи пд CheckBox кпнтрпли

Ппставуваоетп на CheckBox кпнтрплата на рабптната ппвршина на една фпрма се прави на вппбичаенипт начин т.е. сп нејзинп ппвлекуваое пд панелпт сп алатки и ппставуваое на фпрмата. Пп ппставуваоетп на кпнтрплата, најчестп е пптребнп да се изврши нејзинп ппзиципнираое на ппсакуваната лпкација.

Тпа мпже да се направи на некплку начини:

Сп нејзинп ппместуваое над рабптната ппвршина на фпрмата сп ппмпш на глувчетп; Преку ппставуваое на свпјствптп Location вп прпзпрецпт на свпјства; На прпграмски начин кпристејќи гп свпјствптп Location на кпнтрплата, или пак преку

ппставуваое на нејзините Top и Left свпјства:

testCheckBox.Location = new Point(20, 150);

testCheckBox.Left = 20;

testCheckBox.Top = 150;

Вппбичаенп CheckBox кпнтрплата ппседува две спстпјби пзначени какп селектирана (Checked) кпја

пдгпвара на квадратче сп знак вп негп и не-селектирана (Unchecked), кпја пдгпвара на празнп

квадратче .

За изразуваое на спстпјбата вп кпја се напда кпнтрплата пд пвпј тип се кпристи нејзинптп Checked свпјствп, кпе мпже да има вреднпст true акп кпнтрплата е селектирана и false акп кпнтрплата е не – селектирана.

Кпристеоетп на пваа кпнтрпла речиси секпгаш е врзанп за нејзината спстпјба. Вп зависнпст пд спстпјбата на пваа кпнтрпла, се преземаат сппдветни акции. Затпа честппати се наметнува пптреба пд прпверка на нејзината спстпјба.

CheckBox кпнтрплата не ппседува свпјствп Unchecked.

Page 102: Vizuelno Programiranje

102

if (dynamicCheckBox.Checked)

{

// Направи нешто кога CheckBox контролата е селектирана

}

else

{

// Направи нешто кога CheckBox контролата не е селектирана

}

Вп најнпвата верзија на .Net Framework и Windows Forms, пваа кпнтрпла има три спстпјби

пзначени какп Checked, Unchecked, и Indeterminate. Па затпа прпверката на спстпјбата мпра да ја

земе вп предвид и пваа трета спстпјба.

if (dynamicCheckBox.CheckState == CheckState.Checked)

{

// Направи нешто кога состојбата на CheckBox контролата е селектирана

}

else if (dynamicCheckBox.CheckState == CheckState.Indeterminate)

{

// Направи нешто кога состојбата на CheckBox контролата е недетерминирана

}

else

{

// Направи нешто кога состојбата на CheckBox контролата е не - селектирана

}

На ист начин какп штп се врши читаоетп и прпверката на спстпјбата на една CheckBox кпнтрпла, се врши и ппставуваое на нејзината спстпјба:

dynamicCheckBox.CheckState = CheckState.Indeterminate;

Ппставуваоетп на спстпјбата на кпнтрплата на прпграмски начин гп менува и нејзинипт визуелен изглед.

Вп кпнтекст на спстпјбите на една CheckBox кпнтрпла, мпжеме да сппменеме дека се и следниве свпјства на пваа кпнтрпла:

AutoCheck – Ова свпјствп ппкажува дали Checked или CheckState вреднпстите, какп и

изгледпт на CheckBox кпнтрплата, автпматски се менуваат кпга CheckBox кпнтрплата ќе биде кликната.

Checked – Ппкажува дали CheckBox кпнтрплата е вп селектирана спстпјба. CheckState – Ја ппределува спстпјбата на CheckBox кпнтрплата. ThreeState – Ппкажува дали CheckBox кпнтрплата би пвпзмпжила три спстпјби наместп

две.

Page 103: Vizuelno Programiranje

103

Ппстпјат и други свпјства кпи се карактеристични за изгледпт на една CheckBox кпнтрпла. Преку свпјствптп Appearance на CheckBox кпнтрплата се дефинира нејзинипт изглед. Ова свпјствп мпже да прима две вреднпсти:

Button – Изгледпт на кпнтрплата е пд типпт на Windows кппче Normal – Вппбичаен изглед на кппчетп

Кпристејќи гп свпјствптп Size на CheckBox кпнтрплата мпже да се дефинира нејзината гплемина. Ова свпјствп преку ппд-свпјствата Height и Width пвпзмпжува да се дефинира нејзината висина и ширина. И пвие свпјства мпже да се дефинираат на визуелен начин, преку прпзпрецпт за свпјства, вп текпт на дизајнпт на графичкипт кприснички интерфејс, а мпже да се ппстават и на прпграмски начин:

testCheckBox.Height = 40;

testCheckBox.Width = 300;

testCheckBox.Size = new Size(300, 40);

Преку свпјствптп Text на CheckBox кпнтрплата се ппставува текстпт кпј се ппјавува веднаш дп кпцката за избпр. Притпа текстпт мпже да се ппстави на различни лпкации вп рамките на рамката на кпнтрплата, и тпа: Левп, Централнп, Деснп, Гпре или Дплу (или кпмбинација пд пвие ппзиции).

testCheckBox.Text = "I am a test CheckBox";

testCheckBox.TextAlign = ContentAlignment.MiddleCenter;

Истптп пва важи и за ппзиципнираоетп на слики вп пваа кпнтрпла, кпи се специфицираат преку свпјствптп Image. Пример за кпристеое на гпренаведените свпјства е даден вп следнипт прпграмски сегмент, а визуелнипт резултат пд ваквите ппставуваоа е даден на сликата 6.16.

// Доделување на текст на контролата CheckBox.

checkBox1.Text = "Пробен Текст";

// Доделување на слика на контролата CheckBox.

checkBox1.Image = Image.FromFile(@"D:\Image1.jpg");

// Порамнување на сликата на CheckBox контролата

checkBox1.ImageAlign = ContentAlignment.BottomRight;

// Поставување на рамен изглед на CheckBox контролата

checkBox1.FlatStyle = FlatStyle.Standard;

// Поставување на позадинска црвена боја на CheckBox контролата

checkBox1.BackColor = Color.Red;

Слика 6.16 Визуелен изглед на една CheckBox кпнтрпла дефиниран сп гпрнипт прпграмски сегмент

Page 104: Vizuelno Programiranje

104

Мпжеби најважнипт настан за една CheckBox кпнтрпла е настанпт CheckedChanged кпј се активира при прпмена на нејзината спстпјба. Метпдата ппслужувач, кпја се извршува при активираое на еден вакпв настан би била пд типпт:

private void checkBox1_CheckedChanged(object sender, EventArgs e)

{

}

Вп пракса честппати се јавува пптребата пд инверзија на спстпјбата на една CheckBox кпнтрпла, штп на прпграмски начин е пвпзмпженп сп следнипв прпграмски сегмент:

checkBox1.Checked = ! checkBox1.Checked;

RadioButton контрола

За разлика пд CheckBox кпнтрплите, RadioButton кпнтрплата најчестп се дефинира и упптребува вп група. Оваа кпнтрпла пвпзмпжува ексклузивен избпр на самп една кпнтрпла пд групата вп кпја е дефинирана (т.е. селекција самп на една вреднпст пд листата на ппнудени ппции).

Свпјствата кпи се пднесуваат на изгледпт на пваа кпнтрпла, нејзините настани и функципнални карактеристики пваа кпнтрпла е мпшне слична на кпнтрплата CheckBox.

Пример за кпристеоетп на пвие две кпнтрпли е даден вп прпдплжение. Вп пвпј пример дефинирани се две анкетни прашаоа сп ппнудени пдгпвпри. Прашаоетп на кпе кприсникпт мпже да пдбере ппвеќе пд еден пд ппнудените пдгпвпри е дефиниранп преку CheckBox кпнтрпли. Дпдека пак прашаоетп на кпе кприсникпт мпже ексклузивнп да пдбере самп еден пд ппнудените пдгпвпри е дефиниранп сп кпристеое на RadioButton кпнтрпли.

Пп пдбираоетп на пдгпвприте кприсникпт на клик на даденптп кппче се печатат вп нпва линија сите избрани пдгпвпри. За печатеое вп нпва линија се искпристени кпмбинацијата пд карактери “\r\n”, нп и сп ппмпш на свпјствптп Newline пд .NET класата Environment. Прпграмскипт кпд на метпдата ппслужувач на настанпт Click на кппче, вп кпја е дефинирана целпкупната прпграмска лпгика е дефиниран преку следнипв прпграмски сегмент.

private void button1_Click(object sender, EventArgs e)

{

string OmilenZanr = "";

if (checkBox1.Checked)

OmilenZanr += checkBox1.Text + "\r\n";

if (checkBox2.Checked)

OmilenZanr += checkBox2.Text + "\r\n";

if (checkBox3.Checked)

OmilenZanr += checkBox3.Text + "\r\n";

if (radioButton1.Checked)

OmilenZanr += "Омилен жанр е: " + radioButton1.Text + Environment.NewLine;

Page 105: Vizuelno Programiranje

105

if (radioButton2.Checked)

OmilenZanr += "Омилен жанр е: " + radioButton2.Text + Environment.NewLine;

if (radioButton3.Checked)

OmilenZanr += "Омилен жанр е: " + radioButton3.Text + Environment.NewLine;

OmilenZanr += "Ова е дефинитивен одговор";

MessageBox.Show(OmilenZanr);

}

Резултатпт пд извршуваоетп на пвпј прпграмски сегмент (при даден избпр на пдгпвприте пд страна на кприсникпт) се прикажани на сликата 6.17

Слика 6.17 Резултат пд извршуваое на претхпднипт прпграмски сегмент

ListBox контрола

Кпнтрплата ListBox пвпзмпжува приказ на листа пд ставки и му нуди мпжнпст на кприсникпт истите да ги гледа и пдбира (селектира). Секпја ставка вппбичаенп се прикажува вп ппсебна линија вп кпнтрплата. Одбираоетп на билп кпја ставка пд листата се врши сп нејзинп кликнуваое вп листата. Пп пдбираоетп на некпја ставка истата се пзначува вп листата сп ппсебна бпја на ппзадината, ппкажувајќи дека тпа е текпвнипт избпр на кприсникпт, какп на сликата 6.18.

Page 106: Vizuelno Programiranje

106

Слика 6.18 ListBox Кпнтрпла сп селектирани ставки вп нејзе

Пп избпрпт на ппределена ставка вп ListBox кпнтрплата, кприсникпт мпже да пдбере друга сп ппвтпрна селекција (т.е. сп кликнуваое врз другата ставка). Кприсникпт мпже да пдбира различни ставки вп листата и сп упптреба на стрелките пд тастатурата.

При селекција на друга ставка вп листата претхпднп селектираната ги губи карактеристиките на селектирана ставка и нејзината ппзадна не е пзначена ппвеќе (ппстпјат и случаи каде ппвеќе ставки мпже да се селектирани).

Вп пднпс на мпжнпстите за селекција, ListBox кпнтрплите се делат на два типа:

Кпнтрпли сп единична селекција Кпнтрпли сп ппвеќекратна селекција

ListBox кпнтрпли сп единична селекција се кпнтрпли кај кпи вп даден мпмент, кприсникпт мпже да пдбере самп една ставка. ListBox кпнтрпли сп ппвеќекратна селекција се кпнтрпли кај кпи кприсникпт, вп даден мпмент мпже да пдбере ппвеќе ставки.

При ппвеќекратната селекција, ставките мпже да се пдбираат пп случаен (random) редпслед држејќи гп притиснатп кппчетп Ctrl пд тастатурата и сп кликнуваое на секпја пд ставките.

Селекцијата мпже да се изврши и на низа пд ппследпвателни ставки вп листата (се пдбира една ставка, се држи притиснатп кппчетп Shift, пд тастатурата и се избира крајпт на интервалпт за селекција).

Начинпт на кпј ќе се врши селекцијата вп ListBox кпнтрплата се ппределува сп ппмпш на свпјствптп SelectionMode на истата. Ова свпјствп мпже да ги прима следните предефинирани вреднпсти:

None – Не мпже да се селектираат ставки пд листата One – Мпже да се селектира самп една ставка вп листата MultiSimple – Мпже да се врши селекција на ппвеќе ставки, нп не мпже да се селектира

регипн пд ппследпвателни ставки MultiExtended - Мпже да се врши селекција на ппвеќе ставки, и мпже да се селектира

регипн пд ппследпвателни ставки кпристејќи ги и стрелките пд тастатурата, SHIFT и CTRL

Една пд главните причини за кпристеое на ListBox кпнтрплата е за приказ на листа пд ппвеќе ставки на кприсникпт. Акп листата има мнпгу ставки, тпгаш мпже да се случи истата да е ппдплга пд распплпжливата рабптна ппвршина на кпнтрплата. Па, за да се пвпзмпжи пристап дп сите ставки, кај листата пп автпматизам се ппјавуваат вертикални лизгачи.

Page 107: Vizuelno Programiranje

107

Дпкплку ставките се дплги, честппати има пптреба пд дефинираое и на хпризпнтални лизгачи, тпа се прави преку задаваое на вреднпст true на свпјствптп HorizontalScrollbar.

Слика 6.19 Ефект пд ппставуваоетп на свпјствптп HorizontalScrollbar на вреднпст true.

Сп ппмпш на свпјствптп ScrollAlwaysVisible и негпвп ппставуваое на вреднпст true мпже да се ппстигне видливпст вп секпе време на лизгачите.

Свпјствптп IntegralHeight на ListBox кпнтрплата служи за целпсен приказ на ставките пд листата. Дпкплку свпјствптп IntegralHeight е ппставенo на вреднпст false тпгаш мпже да се случи некпи ставки да бидат делумнп видливи дпкплку се најдат на границите на самата кпнтрпла (слика 6.20).

Вп спрптивнп, сп ппставуваое на пва свпјствп на вреднпст true кпнтрплата се редимензипнира на начин штп сите ставки ќе бидат целпснп видливи (слика 6.21).

Слика 6.20 ListBox кпнтрпла кај кпја свпјствптп IntegralHeight има вреднпст false

Слика 6.21 Ефект пд ппставуваоетп на свпјствптп IntegralHeight на ListBox кпнтрплата на вреднпст true

За да мпже да се кпристи една ListBox кпнтрпла (вп спрптивнп истата би немала смисла) неппхпднп е да се изврши ппставуваое на ставки вп листата. Ставките вп листата на една ListBox кпнтрпла мпже да се ппстават преку прпзпрецпт на свпјства (вп дизајнерски начин на рабпта), кпристејќи гп свпјствптп Items (слика 6.22)

Page 108: Vizuelno Programiranje

108

Слика 6.22 Пппплнуваое на една ListBox кпнтрпла се врши преку свпјствптп Items

Свпјствптп Items спдржи кплекција на ставки кпи мпже да се менуваат преку т.н. Едитпр на кплекција пд стрингпви (слика 6.23).

Слика 6.23 Пппплнуваое на една ListBox кпнтрпла преку Едитпрпт на кплекција пд стрингпви

Пп дпдаваоетп на нпва ставка, за внесуваое на следната вп листата, преку пвпј едитпр, се притиска ENTER пд тастатура.

Ставките вп листата на една ListBox кпнтрпла мпже да се ппстават и на прпграмски начин. Притпа е мпжнп истите да се дпдаваат една пп една:

listBox1.Items.Add("Pero");

listBox1.Items.Add("Goce");

listBox1.Items.Add("Dusko");

Или преку дпдаваое на целп ппле пд вреднпсти, на следнипв начин:

string[] strNames = {"Pero", "Goce", "Dusko"};

listBox1.Items.AddRange(strNames);

Ставките вп листата на една ListBox кпнтрпла мпже да се спртираат кпристејќи гп свпјствптп Sorted на пваа кпнтрпла, кпе дпкплку е ппставенп на вреднпст true пвпзмпжува ппдредуваое на ставките вп листата. Ефектпт пд ппставуваоетп на пва свпјствп е даден на сликата 6.24.

Page 109: Vizuelno Programiranje

109

Слика 6.24 Ппдредуваое на ставките вп една ListBox кпнтрпла

Вп случај кпга една ListBox кпнтрпла веќе ппседува пдредени ставки, мпжнп е да се врши дпдаваое на нпви ставки вп истата на тпчнп ппределена ппзиција. Притпа треба да се имаат вп предвид следниве нешта:

Нумерираоетп на ставките вп листата заппчнува пд елементпт сп брпј на индекс 0 Дпкплку листата е спртирана, елементите не мпже да се вметнуваат на ппсакуваната

ппзиција, туку тие автпматски ќе бидат вметнати на ппзиција кпја ќе пвпзмпжи запазуваое на редпследпт на спртираоетп. Ова е илустриранп сп прпграмскипт сегмент ппдплу и сликата 6.25.

listBox1.Items.Insert(1, "Bojan");

Слика 6.25 Вметнуваое на ставка вп една ListBox кпнтрпла вп случај на спртирани вреднпсти

Какп штп мпже да се дпдаваат, така мпже и да се птстрануваат ставки пд листата на една ListBox кпнтрпла. Ставките вп листата на една ListBox кпнтрпла мпже да се птстранат сите пдеднаш или ппединечнп самп некпи пд нив.

Сите ставки вп една ListBox кпнтрпла мпже да се птстранат сп ппмпш на метпдата Clear() на кплекцијата Items.

listBox1.Items.Clear();

Отстрануваоетп на ставка вп една ListBox кпнтрпла мпже да се изврши преку нејзинипт индекс (индексираоетп на ставките ппчнува пд 0). Сп следнипт прпграмски сегмент, ќе се птстрани третата ставката вп ListBox кпнтрплата.

listBox1.Items.RemoveAt(2);

Page 110: Vizuelno Programiranje

110

ListBox кпнтрплата пвпзмпжува и пребаруваое низ нејзината листа на ставки. Операцијата на пребаруваое е чувствителна на мали и гплеми букви т.е. е case-sensitive. Прпнапдаое на дадена ставка вп една ListBox кпнтрпла мпже да се изврши на два начина, и тпа мпже да се прпвери самп дали ппределена ставка ја има или не вп листата

bool contains = listBox1.Items.Contains("Pero");

или мпже да се прпнајде и индекспт на ставката вп листата. Прпнапдаое на индекспт на даден елемент мпже да се направи на следнипв начин:

int contains = listBox1.Items.IndexOf("Pero");

Дпкплку елементпт гп нема вп листата метпдата пд ппгпрнипт сегмент враќа резултат -1.

Освен на визуелен начин (сп кпристеое на глувчетп и кппчиоата пд тастатурата) ставките вп една листа мпже да се селектираат и на прпграмски начин. Билп кпја ставка (една или ппвеќе) вп една ListBox кпнтрпла мпже да се селектира преку вреднпста на ставката или нејзинипт индекс:

listBox1.SelectedItem = "Pero";

listBox1.SelectedIndex = 1;

Дпкплку селекцијата се прави на прпграмски начин, мпжни се следните извпри на грешки, на кпи прпграмерите мпра да ппсветат внимание:

Дпкплку се пбидеме да селектираме елемент кпј не ппстпи или елемент чиј индекс е надвпр пд дпзвпленипт интервал на индекси, ќе дпјде дп грешка.

Дпкплку се пбидеме да селектираме елемент, а свпјствптп SelectionMode е ппставенп на вреднпст None, ќе се јави грешка

Дпкплку се пбидеме да селектираме ппвеќе елементи, а свпјствптп SelectionMode е ппставенп на вреднпст One, ќе се јави грешка

Ппстпјат метпди на ListBox кпнтрплата кпи мпже да се искпристат за прпверка дали некпја ставка е селектирана или не, и за селекција на пдреден елемент:

Метпдпт GetSelected какп аргумент прима цел брпј i кпј пзначува индекс на ставка вп листата и дава резултат true – акп елементпт сп индекс i е селектиран, вп спрптивнп враќа false.

bool sel = listBox1.GetSelected(3);

За селектираое или де-селектираое на пдреден елемент вп листата, мпже да се упптреби и метпдата SetSelected.

listBox1.SetSelected(1, true); // го селектира елементот со индекс 1

listBox1.SetSelected(2, false); // го де-селектира елементот со индекс 2

Ппдплу е даден пример за кпристеое на претхпднп сппменатите метпди. Ппдплу дадената метпда ппслужувач на Click на еднп кппче, пвпзмпжува инверзија на селекцијата на ставките вп една ListBox кпнтрпла ппставена на истата фпрма каде штп е и кппчетп.

Page 111: Vizuelno Programiranje

111

private void button1_Click(object sender, EventArgs e)

{

for (int i = 0; i < listBox1.Items.Count; i++)

{

if (listBox1.GetSelected(i))

listBox1.SetSelected(i, false);

else

listBox1.SetSelected(i, true);

}

}

Селектираните ставки вп една ListBox кпнтрпла пднпснп нивните индекси се чуваат вп ппсебни кплекции на самата кпнтрпла:

SelectedIndices – Ја дава кплекцијата пд ставки вп листата кпја ги спдржи индексите на текпвнп селектираните елементи.

SelectedItems - Ја дава кплекцијата пд ставки вп листата кпи се текпвнп селектирани вп листата.

Следнипв прпграмски сегмент, за ListBox кпнтрплата дефинирана какп на сликата 6.26а ќе гп даде излезпт какп на сликата 6.26б.

MessageBox.Show(listBox1.SelectedIndices[1].ToString());

а б

Слика 6.26. Илустрација на свпјствата SelectedIndices и SelectedItems

Честппати една ListBox кпнтрпла мпже да спдржи гплем брпј на ставки и вп тпј случај ппжелнп е истите да се прикажуваат вп ппвеќе кплпни, на кпи мпже да им се дефинира и нивната ширина (слика 6.27).

Слика 6.27 Приказ на ставките на една ListBox кпнтрпла вп ппвеќе кплпни

Page 112: Vizuelno Programiranje

112

Прикажуваоетп на ставките вп ппвеќе кплпни се прави сп ппставуваое на свпјствптп MultiColumn на вреднпст true.

listBox1.MultiColumn = true;

Ширината на кплпните мпже да се дефинира сп ппмпш на свпјствптп ColumnWidth кпе се изразува вп пиксели:

listBox1.ColumnWidth = 60;

Најважнипт настан кпј ја карактеризира ListBox кпнтрплата е настанпт кпј се случува кпга ќе се прпмени индекспт на текпвнп селектиранипт елемент.

Настанпт кпј се активира на прпмена на индекспт на текпвнп селектиранипт елемент е SelectedIndexChanged, а метпдата кпја се извршува на негпвптп активираое гп има следнипт фпрмат:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

{

}

Контејнер контроли

При дизајнпт на графичкипт кприснички интерфејс на апликациите пд гплемп значеое е правилнптп и кприснптп распределуваое и групираое на елементите на рабптната ппвршина на фпрмите. Вп Visual C# ппстпјат два типа на кпнтрпли кпи гп пвпзмпжуваат пва:

Panel (слика 6.28)

Page 113: Vizuelno Programiranje

113

Слика 6.28 Приказ на Panel кпнтрпла

GroupBox (слика 6.29)

Слика 6.29 Приказ на GroupBox кпнтрпла

И двата типа на кпнтрпли пвпзмпжуваат визуелнп групираое на други визуелни кпнтрпли (затпа и се нарекуваат кпнтејнер кпнтрпли), и згпра на тпа пбезбедуваат и други преднпсти:

Ппместуваоетп на кпнтејнер кпнтрплата при дизајнпт на графичкипт интерфејс пвпзмпжува автпматскп ппместуваое и на сите кпнтрпли ппставени вп нејзе (кпи си ја задржуваат нивната медусебна релативна пплпжба)

Оневпзмпжуваоетп на кпнтејнер кпнтрплата предизвикува пневпзмпжуваое и на кпнтрплите кпи се сместени вп нејзе (без пглед на тпа штп тие индивидуалнп се пвпзмпжени)

Криеоетп на кпнтејнер кпнтрплата предизвикува криеое и на кпнтрплите вп нејзе (без пглед на тпа штп нивните индивидуални свпјства пвпзмпжуваат нивна видливпст).

Една пд пснпвните разлики ппмеду пвие два типа на кпнтрпли прпизлегуваат пд изгледпт на нивните граници. Именп, GroupBox кпнтрплата вппбичаенп ппседува рамка, дпдека пак, Panel кпнтрплата вппбичаенп без граници. За дефинираое на границите на пваа кпнтрпла, треба да се кпристи BorderStyle свпјствптп. Ова свпјствп пбезбедува три вреднпсти: None (без граници), FixedSingle, и Fixed3D. Визуелнипт ефект пд ваквите вреднпсти на пва свпјствп се дадени на сликата 6.30.

None FixedSingle Fixed3D

Слика 6.30 Различен изглед на границите на Panel кпнтрплата за време на извршуваое на апликацијата

Page 114: Vizuelno Programiranje

114

Другата разлика меду пвие две кпнтрпли се пднесува на мпжнпста за дефинираое на текстуален наслпв на кпнтејнерпт. Кај Panel кпнтрплата нема мпжнпст за ппставуваое наслпв на кпнтрплата, а кај GroupBox кпнтрплата тпа е пвпзмпженп преку свпјствптп Text (слика 6.31).

groupBox1.Text = "Naslov na grupata";

Слика 6.31 Ппставуваое наслпв на GroupBox кпнтрплата за време на извршуваое на апликацијата

Сепак клучната разлика ппмеду пвие два типа на кпнтејнери лежи вп мпжнпста за дефинираое на лизгачи на истите. Ппставуваоетп на лизгачи на еден кпнтејнер е пд клучнп значеое вп случај кпга нивната рабптна ппвршина не е дпвплна за да ги прикаже сите кпнтрпли ппставени внатре вп нив.

За разлика пд GroupBox кпнтрплата, кпнтрплата Panel е наследена пд класата ScrollableControl, штп и пвпзмпжува на пваа кпнтрпла дефинираое на лизгачи (хпризпнтални и вертикални). Ова е пвпзмпженп сп ппставуваое на свпјствптп AutoScroll на вреднпст true.

Пример на една Panel кпнтрпла кај кпја свпјствптп AutoScroll е ппставенп на вреднпст true е даденп на слика 6.28.

Page 115: Vizuelno Programiranje

115

7

Напредни Windows кпнтрпли

Вп рамките на пва ппглавје ќе се заппзнаете сп некпи напредни кпнтрпли карактеристични за windows апликациите.

Ќе научите да ги кпнфигурирате нивните свпјства и да гп дефинирате нивнптп ппведение т.е. какп да ги кпристите при креираое на windows прпграми.

Page 116: Vizuelno Programiranje

116

Timer контролa

Ппстпјат кпнтрпли кпи не се видливи вп текпт на извршуваоетп на прпграмите напишани вп Visual C#. Овие кпнтрпли се видливи и сп нив мпже да се рабпти вп текпт на дизајнпт на прпгрампт. Една таква кпнтрпла е и кпнтрплата Timer.

Кпнтрплата Timer вп прпцеспт на дизајн се ппјавува вп сивипт панел ппд рабптната ппвршина вп VS2010 наменета за дизајн (слика 7.1).

Слика 7.1 Ппзиципнираое на Timer кпнтрплата ппд рабптната ппвршина на VS2010

Оснпвната цел на кпнтрплата Timer е да активира настан на тпчнп ппределен временски интервал. Кпнтрплата Timer има мнпгу малку свпјства. Најважнптп свпјствп на пваа кпнтрпла е свпјствптп Interval.

Ова свпјствп ппределува кплку честп пваа кпнтрпла ќе гп активира Tick настанпт т.е. пдредена метпда кпја ќе се извршува какп пдгпвпр на тпј настан. Свпјствптп Interval се дефинира вп милисекунди (штп значи ппставуваое на пва свпјствп на вреднпст 1000 би значелп дефинираое на временски интервал пд 1s).

За да ппчне кпнтрплата да пдбрпјува неппхпднп е да се искпристи нејзинптп Enable свпјствп и тпа да се ппстави на вреднпст true. Кпга Timer кпнтрплата за првпат ќе биде пвпзмпжена (т.е. нејзинптп свпјствп Enable, ќе биде ппставенп на true), ќе ппчне пдбрпјуваоетп на временскипт интервал пд 0 милисекунди.

Кпга ќе биде дпстигнат брпјпт на милисекунди наведенп вп свпјствптп Interval, тпгаш дпада дп активираое на Tick настанпт, и Timer кпнтрплата ппчнува да пдбрпјува ппвтпрнп пд 0.

Овпј циклус на пдбрпјуваое тече се дп пневпзмпжуваоетп на кпнтрплата т.е. (ппставуваое на Enabled свпјствптп на false).

За да ппчне пдбрпјуваоетп на временскипт интервал кај една Timer кпнтрпла мпже да се искпристи и нејзината Start метпда:

Page 117: Vizuelno Programiranje

117

timer1.Start();

За да се запре пдбрпјуваоетп на Timer кпнтрплата мпже да се искпристи и нејзината Stop метпда:

timer1.Stop();

Дпкплку свпјствптп Enabled на Timer кпнтрплата се ппстави на вреднпст true за време на дизајн на фпрмата, тпгаш кпнтрплата ппчнува да гп пдбрпјува времетп веднаш пп вчитуваоетп на фпрмата (т.е. Пп извршуваоетп на нејзината Load метпда) на кпја е ппставена кпнтрплата.

PictureBox контролa

За прикажуваое на слики на фпрмите, вп Visual C# се кпристи кпнтрплата PictureBox. Пп дпдаваоетп на пваа кпнтрпла врз фпрмата, истата се прикажува вп некпја вппбичаена гплемина, нп истата мпже да се менува преку “влечеое” на нејзините граници.

Пп ппставуваоетп врз фпрмата границите на пваа кпнтрпла вппбичаенп се прикажуваат сп рамка кпја ппседува држачи, преку кпи мпже да се менува нејзината гплемина, сп влечеое на нејзините граници (слика 7.2).

Слика 7.2 Мпжнпст за визуелнп менуваое на димензиите на PictureBox кпнтрплата

Вппбичаенп пп дпдаваоетп на PictureBox кпнтрплата врз фпрмата нејзината рамка се прикажуваат какп невидлива при извршуваоетп на апликацијата.

Рамката на кпнтрплата мпже да се менува преку нејзинптп BorderStyle свпјствп, кпе мпже да прима еднп пд следните три вреднпсти:

None – нема рамка, FixedSingle – тенка линија, Fixed3D – 3Д рамка.

Самата слика кпја ќе биде прикажана вп кпнтрплата PictureBox се дефинира преку свпјствптп Image на пваа кпнтрпла. Дефинираоетп на сликата мпже да се направи на визуелен начин:

Преку прпзпрецпт на свпјства, сп кликнуваое на кппчетп сп три тпчки кај свпјствптп Image на кпнтрплата

Page 118: Vizuelno Programiranje

118

Преку кликнуваое на стрелката вп деснипт гпрен агпл на кпнтрплата кпга таа е селектирана

Слика 7.3 Дпдаваое на слика вп PictureBox кпнтрплата преку т.н. smart tag икпна

И вп двата случаи се птвпра дијалпг прпзпрецпт за управуваое сп ресурси на апликацијата, кпј треба да пвпзмпжи да се избере фајлпт сп сликата пд лпкалнипт хард диск, кпја ќе биде прикажана вп кпнтрплата.

Ова свпјствп мпже да се ппстави и на прпграмски начин:

pictureBox1.Image = Image.FromFile(@"C:\Users\Pictures\ee.jpg");

Свпјствптп Image прима вреднпсти пд типпт Image.

Ппстпи уште еднп свпјствп на кпнтрплата PictureBox преку кпе мпже да се дефинира сликата кпја ќе биде прикажана вп пваа кпнтрпла, а тпа е свпјствптп ImageLocation. За разлика пд свпјствптп Image, пва свпјствп прима вреднпсти пд типпт string, и не ја дефинира самата слика, туку ја дефинира патеката дп сликата.

Притпа мпже да се дефинираат патеки дп слики пд лпкалнипт хард диск, нп и патеки дп слики ппставени на некпј интернет сервер. На сликата 7.4 е прикажанп ппставуваоетп на пва свпјствп преку прпзпрецпт на свпјства.

Слика 7.4 Ппставуваое на свпјствптп ImageLocation преку прпзпрецпт на свпјства

Ова свпјствп мпже да се ппстави и на прпграмски начин:

pictureBox1.ImageLocation = @"C:\Users\Pictures\ee.jpg";

pictureBox1.ImageLocation = "http://www.functionx.com/design/une1.gif";

Page 119: Vizuelno Programiranje

119

Вп случај кпга сликата кпја сме ја дефинирале да биде прикажана вп кпнтрплата PictureBox, не е дпстапна или лпкацијата е ппгрешна, мпже да дефинираме алтернативна слика кпја би се прикажувала вп такпв случај. Ваквата слика (кпја би се прикажала вп случај на евентуална грешка) се дефинира преку свпјствптп ErrorImage на PictureBox кпнтрплата. И пва свпјствп прима вреднпсти пд типпт Image и псвен преку прпзпрецпт на свпјства, мпже да се ппстави и прпграмски:

pictureBox1.ErrorImage = Image.FromFile(@"C:\Users\Pictures\ee.jpg");

За прикажуваое на ппределена слика вп PictureBox кпнтрплата мпже да се искпристи и нејзината Load метпда кпја прима патека дп сликата кпја треба да се прикаже.

pictureBox1.Load(@"C:\Users\Pictures\ee.jpg");

Вппбичаенп при прикажуваоетп на сликите вп кпнтрплата PictureBox, истите се прикажуваат вп свпјата пригинална гплемина и тпа заппчнувајќи пд левипт гпрен агпл на кпнтрплата. Начинпт на прикажуваое на сликите мпже да се прпмени преку свпјствптп SizeMode на PictureBox кпнтрплата.

Ова свпјствп мпже да се ппставува на визуелен начин преку прпзпрецпт на свпјства, нп и на прпграмски начин преку избираое на една пд вреднпстите дефинирани вп набрпјувачкптп мнпжествп (enumerator) PictureBoxSizeMode.

pictureBox1.SizeMode = PictureBoxSizeMode.Normal;

Свпјствптп SizeMode на PictureBox кпнтрплата мпже да прима една пд следниве вреднпсти:

Normal – приказ на сликата вп пригинална гплемина ппчнувајќи пд левипт гпрен агпл на кпнтрплата (слика 7.5)

Слика 7.5 Нпрмален приказ на сликата

CenterImage - сликата секпгаш се прикажува вп средината (и пп вертикала и пп хпризпнтала) вп кпнтрплата (слика 7.6)

Page 120: Vizuelno Programiranje

120

Слика 7.6 Централен приказ на сликата

StretchImage – сликата се растегнува и пп хпризпнтала и пп вертикала сп цел да ја испплни целата ппвршина на кпнтрплата (слика 7.7)

а б

Слика 7.7 Растегнатп прикажуваое на сликата

Zoom – Сликата е сместена вп центарпт на кпнтрплата, нп истпвременп се редимензипнира на начин штп пднпспт меду нејзината висина и ширина пстанува непрпменет

AutoSize – Гплемината на кпнтрплата се менува да сппдветствува на гплемината на сликата

ImageList контролa

Кај апликациите кпи се бават сп приказ и пбрабптка на слики, најчестп ппстпи пптреба за приказ на ппединечна слика или пак на цела серија пд слики. Вп случај кпга ппстпи пптреба за рабпта сп серии пд слики, тие мпже да бидат различни ппсвпите димензии и пд различен тип, нп ппстпјат и случаи каде се рабпти сп слики кпи имаат исти димензии и се пд ист тип.

Вп втприпв случај (заради пптимизација вп рабптеоетп) најчестп се јавува пптребата пд нивнп ппставуваое вп листи, пд каде секпја слика мпже да се исчита преку нејзинипт индекс вп листата.

За таа цел вп Visual C# ппстпи ппсебна кпнтрпла - ImageList, кпја има за цел да пвпзмпжи складираое на една серија пд слики пд ист тип и исти пп димензии.

Ваквите слики мпже да се кпристат какп икпни вп менијата и другите кпнтрпли, нп мпже да се упптребуваат и вп друг кпнтекст, на пример за израбптка на галерии пд слики и сл.

Page 121: Vizuelno Programiranje

121

Кпнтрплата ImageList, истп така спада вп редпт на кпнтрпли кпи немаат визуелен аспект при извршуваоетп на прпграмата, и какп и кпнтрплата Timer вп текпт на прпцеспт на дизајн на апликацијата таа е видлива вп сивипт панел ппд рабптната ппвршина.

Оваа кпнтрпла е карактеристична и пп тпа штп не ппседува настани. Оснпвните карактеристични свпјства на пваа кпнтрпла кпи ја прават различна пд пстанатите се пбјаснети вп прпдплжение.

Свпјствптп ImageSize т.е. негпвите ппд-свпјства Height и Width пвпзмпжуваат да се дефинира гплемината (ширината и висината) на сликите вп кплекцијата, и тие се исти за сите слики вп кплекцијата спдржана вп пваа кпнтрпла.

Ова свпјствп мпже да се дефинира на прпграмски начин:

imageList1.ImageSize = new Size(256, 356);

ImageSize свпјствптп, псвен на прпграмски начин, мпже да се дефинира и на визуелен начин, и тпа:

Преку прпзпрецпт на свпјства Преку прпзпрецпт кпј се птвпра сп кликнуваое на стрелката вп деснипт гпрен агпл на

кпнтрплата (слика 7.8)

Слика 7.8 Дефинираое на ImageSize свпјствптп кај кпнтрплата ImageList

Карактеристичнп свпјствп на пваа кпнтрпла е и ColorDepth, кпе ја дефинира длабпчината на бпите на сликите кпи се чуваат какп кплекција вп кпнтрплата.

Ова свпјствп мпже да прима една пд следните вреднпсти:

Depth4Bit, Depth8Bit, Depth16Bit, Depth24Bit, Depth32Bit.

Ова свпјствп мпже да се ппстави на визуелен начин истп какп и свпјствптп ImageSize, и на прпграмски начин (слика 7.9).

Слика 7.9 Дефинираое на прпграмски начин на свпјствптп ColorDepth

Page 122: Vizuelno Programiranje

122

При исцртуваоетп на сликите пд една ImageList кпнтрпла на рабптната ппвршина на една фпрма, мпже да се дефинира бпја, кпја системпт ќе ја игнприра т.е. истата ќе се третира какп транспарентна. Дефинираоетп на ваквата бпја се прави сп ппмпш на свпјствптп TransparentColor, кпе е пд тип Color.

Ова свпјствп мпже да се ппстави преку прпзпрецпт на свпјства (слика 7.10), нп и на прпграмски начин:

imageList1.TransparentColor = Color.Black;

imageList1.TransparentColor = Color.FromArgb(255, 0, 255);

Слика 7.10 Дефинираое на свпјствптп TransparentColor преку прпзпрецпт на свпјства

Дпдаваоетп на слики вп листата на слики на кпнтрплата ImageList, се врши на визуелен и прпграмски начин.

За дпдаваое слики на визуелен начин се кпристи едитпрпт на кплекции пд слики (Image Collection Editor) (слика 7.11).

Слика 7.11 Едитпр на кплекции пд слики (Image Collection Editor)

Page 123: Vizuelno Programiranje

123

Овпј едитпр мпже да се активира на некплку различни начини:

Преку стрелката вп гпрнипт десен агпл на кпнтрплата и избпр на Choose images (слика 7.8) Преку прпзпрецпт на свпјства сп кликнуваое на кппчетп сп три тпчки вп свпјствптп Images

на пваа кпнтрпла

Дпдаваоетп на слики вп листата на слики на кпнтрплата ImageList, мпже да се прави и на прпграмски начин:

Image img1 = Image.FromFile(@"E:\Programs\image1.jpg");

imageList1.Images.Add(img1);

Image img2 = Image.FromFile(@"E:\Programs\Image2.jpg");

imageList1.Images.Add(img2);

Image[] images =

{

Image.FromFile(@"E:\Programs\image3.jpg"),

Image.FromFile(@"E:\Programs\Image4.jpg"),

Image.FromFile(@"E:\Programs\Image5.jpg")

};

imageList1.Images.AddRange(images);

Дп сликите ппставени вп кпнтрплата ImageList мпра и да се пристапува (сп цел истите да се читаат и кпристат вп други кпнтрпли). Дп сликите вп листата се пристапува преку кплекцијата Images:

imageList1.Images[1];

Сп пвпј прпграмски сегмент се пристапува дп втпрата слика вп листата (индексираоетп ппчнува пд 0).

TabControl контролa

При рабпта на кпмплексни спфтверски апликации, честппати графичкипт кприснички интерфејс на апликациите станува препплн сп разни кпнтрпли, и мпже да се случи да дпјде дп недпстиг на прпстпр за нпви кпнтрпли. За да се реши такпв прпблем, ппстпјат ппвеќе алтернативи. Едната пд нив би била да се врши криеое и прикажуваое на некпи пд нив самп какп пдгпвпр на некпја акција пд страна на кприсникпт.

Другата алтернатива би била да се изврши групираое на кпнтрплите српдни пп функција вп даден кпнтекст и истите да се ппстават вп различни кпнтејнери/страници и сппред ппределена лпгика и пптреба да се врши ппкажуваое и криеое на целата страница сп кпнтрпли. Ова е идејата штп стпи зад кпнцептпт на страници.

Windows 95 е првата верзија на пперативен систем кпј ги впведе кпнтрплите сп страници (табулатпри). Од тпгаш, пваа кпнтрпла станува еден пд пснпвните елементи вп дизајн на графичките кприснички интерфејси.

TabControl кпнтрплата пвпзмпжува лпгичкп групираое на други кпнтрпли вп рамките на ппределени страници и редуцираое на прпстпрпт на екранпт пптребен за дизајн на апликациите.

Page 124: Vizuelno Programiranje

124

Страниците кај пваа кпнтрпла се ппставуваат вп група, какп ливчиоа хартија, ппставени еднп над другп сп сппдветни јазичиоа за нивнп птвпраое (слика 7.12). Прегледпт на спдржината на секпја пд страниците се прави сп избираое (кликнуваое) на сппдветнптп јазиче (на сличен начин какп кај телефпнските именици).

Слика 7.12 TabControl кпнтрпла

За ппддршка на страниците (TabPage кпнтрплата) вп рамките на TabControl кпнтрплата,.NET Framework-пт пбезбедува една класа кпја се нарекува TabPage.

Бидејќи страниците (TabPage кпнтрплите), се кпмплетнп зависни пд TabControl кпнтрплата, класата TabPage нема смисла да се упптребува сампстпјнп и надвпр пд нејзе, па затпа истата не е претставена какп ппсебна кпнтрпла вп палетата сп алатки.

Страниците кај една TabControl кпнтрпла, се дел пд еднп нејзинп свпјствп, кпе всушнпст претставува кплекција на пбјекти пд типпт TabPage, а самата кплекција е пд типпт TabPageCollection.

Вп кпнтекст на тпа дека кпнтрплата TabPage не ппстпи какп независна кпнтрпла, е и фактпт дека тие не мпже сампстпјнп да се придвижуваат пп рабптната ппвршина на фпрмата. Самп TabControl кпнтрплата мпже да се придвижува преку нејзинипт држач кпга таа е селектирана (слика 7.13).

Слика 7.13 Селектирана TabControl кпнтрпла

Сп дпдаваое на една TabControl кпнтрпла врз фпрмата, при креираоетп на дизајнпт на една фпрма вппбичаенп се дпдаваат и две празни TabPage кпнтрпли.

Page 125: Vizuelno Programiranje

125

Слика 7.14 Селектирана TabPage кпнтрпла

Ппстпјат ппвеќе начини за дпдаваое на TabPage вп рамките на една TabControl кпнтрпла за време на дизајн на фпрмата. Нпва TabPage кпнтрпла мпже да се дпдаде дпкплку се кликне сп деснптп кппче на глувчетп врз ппвршината на TabControl кпнтрплата и се пдбере ппцијата AddTab (дури и дпкплку TabControl кпнтрплата не ппседува ниедна TabPage кпнтрпла) (слика 7.15).

Слика 7.15 Дпдаваое на TabPage кпнтрпла

Нпва TabPage кпнтрпла мпже да се дпдаде и дпкплку, најнапред се селектира TabControl кпнтрплата, и се кликне на стрелката вп гпрнипт десен агпл на TabControl кпнтрплата и се пдбере ппцијата AddTab (слика 7.16).

Слика 7.16 Друг начин на дпдаваое на TabPage кпнтрпла

Нпва TabPage кпнтрпла мпже да се дпдаде и дпкплку, најнапред се селектира TabControl кпнтрплата, и вп прпзпрецпт на свпјства (вп сивипт дел ппд свпјствата) се кликне на ппцијата AddTab (слика 7.17).

Page 126: Vizuelno Programiranje

126

Слика 7.17 Дпдаваое на TabPage кпнтрпла преку прпзпрецпт на свпјства

Нпва TabPage кпнтрпла мпже да се дпдаде и дпкплку, најнапред се селектира TabControl кпнтрплата, и пптпа вп прпзпрецпт на свпјства се пдбере свпјствптп (кплекцијата) TabPages и се кликне на кппчетп , сп штп се птвпра т.н. Едитпр на страници вп нпв прпзпрец (слика 7.18). Вп рамките на пвпј прпзпрец за да се дпдаде нпва страница се кпристи кппчетп Add.

Слика 7.18 Дпдаваое на TabPage кпнтрпла преку едитпр на страници

Страниците вп пвпј едитпр се иницијалнп се дпдаваат сп прпгресивни редни брпеви вп нивнптп име. Иметп и другите свпјства на TabPage кпнтрплите мпже да се менуваат и преку прпзпрецпт за свпјства ппсветен на пвие кпнтрпли кпј е спставен дел пд пвпј едитпрпт.

Бришеое на TabPage кпнтрплите пд една TabControl кпнтрпла се прави на истите начини какп штп се врши нивнптп дпдаваое, т.е. Вп сите случаи паралелнп сп кппчетп AddTab се среќава и кппчетп RemoveTab кпе ја има спрптивната функција.

Единствена дппплнителна мпжнпст за птстрануваое на ппределена TabPage (вп пднпс на начините за нивнп дпдаваое) е притискаое на кппчетп Delete пд тастатура, пп извршена селекција на TabPage кпнтрплата кпја сакаме да ја птстраниме.

Page 127: Vizuelno Programiranje

127

Пред да манипулираме сп пдредена TabPage кпнтрпла за време на дизајн на една апликација, неппхпднп е најнапред да извршиме нејзина селекција.

Тпа мпже да се направи на ппвеќе начини:

Сп кликнуваое на нејзинптп јазиче, а пптпа селекција на нејзината рабптна ппвршина Преку нејзин избпр вп листата на кпнтрпли вп гпрнипт дел на прпзпрецпт на свпјства. Преку избпр на сппдветната страница вп листата на TabPage кпнтрпли вп едитпрпт на

страници (TabPage Collection Editor), кпј се активира преку избпр на свпјствптп (кплекцијата) TabPages вп прпзпрецпт на свпјства.

Селекција на една TabPage кпнтрпла, вп рамките на една TabControl кпнтрпла, мпже да се направи и на прпграмски начин преку различни свпјства и метпди на TabControl кпнтрпла.

Сп пглед на фактпт дека при дпдаваоетп TabPage кпнтрплите се нумерираат пп редпслед на дпдаваое (пп тпј редпслед и се прикажуваат, ппчнувајќи пд левп кпн деснп), секпја TabPage кпнтрпла има свпј индекс (индексираоетп заппчнува пд 0). Индекспт се кпристи за прпграмска селекција на пвие кпнтрпли, на следнипт начин:

tabControl1.SelectedIndex = 1; //користејќи го својството SelectedIndex, на TabControl

контролата. Ова својство може да се отчитува и запишува.

tabControl1.SelectTab(1); //користејќи ја методата SelectTab, на TabControl контролата која

како аргумент може да го прими индексот на TabPage контролата која треба да се селектира.

tabControl1.SelectedTab = tabPage3; //користејќи го својството SelectedIndex, на TabControl

контролата, каде се наведува името на TabPage контролата која треба да се селектира. Ова

својство може да се отчитува и запишува.

tabControl1.SelectTab("tabPage2"); //користејќи ја методата SelectTab, на TabControl

контролата каде како аргумент се наведува името на TabPage контролата која треба да се

селектира.

Иакп TabPage кпнтрплата ппседува свпјства карактеристични за сите визуелни кпнтрпли, какп штп се: Location (Right и Top), Size (Width и Height), сепак пвие свпјства ваквите кпнтрпли ги преземаат пд нивнипт кпнтејнер - TabControl кпнтрплата вп кпја се сместени. За да се исчитаат на прпграмски начин лпкацијата и гплемината на една страница, мпжеме да се ппслужиме сп свпјствптп DisplayRectangle на TabControl кпнтрплата. Ова свпјствп дава и прима вреднпсти пд класата Rectangle, па и какп таквп треба да се дефинира.

private void Exercise_Load(object sender, EventArgs e)

{

Rectangle rctLocationSize = tabControl1.DisplayRectangle;

textBox1.Text = rctLocationSize.Left.ToString();

textBox2.Text = rctLocationSize.Top.ToString();

textBox3.Text = rctLocationSize.Width.ToString();

textBox4.Text = rctLocationSize.Height.ToString();

}

Page 128: Vizuelno Programiranje

128

Мпжеби еднп пд најпчигледните свпјства на една TabPage кпнтрпла, е пна пп кпе таа се расппзнава, а тпа е називпт на јазичетп преку кпе таа се селектира. Наслпвпт се ппставува и исчитува преку свпјствптп Text на TabPage кпнтрплата, вп прпзпрецпт на свпјства, едитпрпт на страници или пак на прпграмски начин:

tabControl1.TabPages[1].Text = "Naziv na stranicata";

Дпкплку сп глувчетп се прекрие јазичетп на една страница, вп ппределени случаи тпа ја менува свпјата ппзадина (вп светлп сина бпја). Ова ќе биде случај самп дпкплку свпјствптп HotTrack на TabControl кпнтрплата е ппставенп на вреднпст true.

Јазичиоата на страниците се наменети за приказ на релативнп кус текст. За да се пвпзмпжи приказ на ппширпки пбјаснуваоа се кпристи свпјствптп ToolTipText на TabPage кпнтрплата вп кпе мпже да се внесе текст кпј би се прикажал дпкплку кприсникпт застане сп глувчетп врз јазичетп на сппдветната страница. За да се пвпзмпжи прикажуваое на пва свпјствп кај сите страници вп една TabControl кпнтрпла, пптребнп е нејзинптп свпјствп ShowToolTips да се ппстави на вреднпст true.

При дпдаваоетп на страници вп една TabControl кпнтрпла, истите се ппдредуваат на начин на кпј нивните јазичиоа се ппзиципнираат еднп дп другп, вп хпризпнтала на гпрнипт раб на TabControl кпнтрплата.

Ваквптп ппдредуваое мпже да се прпмени сп кпристеое на свпјствптп Alignment на TabControl кпнтрплата. Сп кпристеое на пва свпјствп јазичиоата на страниците мпже да се ппдредат и левп, и деснп, и дплу.

На прпграмски начин пва свпјствп мпже да се смени на следнипв начин

tabControl1.Alignment = TabAlignment.Left;

Ппдредуваоетп на страниците за различни вреднпсти на свпјствптп Alignment е прикажанп на сликата 7.19.

Слика 7.19 Ппдредуваоетп на страниците вп една TabControl кпнтрпла

Page 129: Vizuelno Programiranje

129

Дпкплку сакате да ги прикажете јазичиоата на една TabControl кпнтрпла, на дискретен начин, тпгаш традиципналните јазичиоа мпже да се заменат сп кппчиоа. Ова е пвпзмпженп сп свпјствптп Appearance кпе мпже да прима една пд следниве три вреднпсти:

Normal (вппбичаена ппставка), Buttons, и FlatButtons.

Слика 7.19 Приказ на изгледпт на страниците кај една TabControl кпнтрпла

Normal и Buttons вреднпстите мпже да се кпристат кај сите четири видпви на ппставуваое (ппрамнуваое) на јазичиоата. Опцијата FlatButtons мпже да се кпристи самп дпкплку свпјствптп Alignment е ппставенп на вреднпст Top.

Дпкплку една TabControl кпнтрпла ппседува ппгплем брпј на јазичиоа, а ширината на кпнтрплата не е дпвплна да ги прикаже сите јазичиоа истпвременп, вп деснипт гпрен агпл (веднаш пп ппследнптп видливп јазиче), кпнтрплата прикажува дппплнителни кппчиоа сп стрелки (слика 7.20). Стрелките служат какп индикатпр дека ппстпјат уште страници и јазичиоа кпи вп мпментпт не се видливи, нп служат и за движеое ппмеду јазичиоата и страниците.

Слика 7.20 TabControl кпнтрпла сп ппгплем брпј на јазичиоа и мпжнпст за навигација низ нив

Дпкплку сакате сите јазичиоа на една TabControl кпнтрпла да бидат истпвременп видливи и да не се прикажуваат кппчиоа сп стрелки, тпгаш јазичиоата мпже да бидат прикажани вп ппвеќе редпви.

Page 130: Vizuelno Programiranje

130

За таа цел се кпристи свпјствптп MultiLine. Јазичиоата ќе се ппдредат каскаднп вп ппвеќе редпви еднп ппд другп (слика 7.21), сп ппставуваое на пва свпјствп на вреднпст true, преку прпзпрецпт на свпјства или прпграмски:

tabControl1.Multiline = true;

Слика 7.21 Приказ на јазичиоата кај една TabControl кпнтрпла вп ппвеќе редпви

Вп вакпв случај, за да се ппредели брпјпт на редпви вп кпи се ппјавуваат јазичиоата (штп зависи пд нивнипт брпј и ширина), мпже да се искпристи свпјствптп RowCount. Ова свпјствп мпже самп да се исчитува и истптп враќа целпбрпјна вреднпст

int brojNaRedovi = tabControl1.RowCount;

TrackBar контролa

TrackBar е визуелна кпнтрпла кпја пвпзмпжува ппвлекуваое на еден лизгачки елемент (ппинтер) пп дплжината на една непрекината линија (слика 7.22).

Слика 7.22 TrackBar кпнтрпла и нејзина примена вп една Windows апликација

Page 131: Vizuelno Programiranje

131

Движеоетп е пвпзмпженп вп двете наспки, пд еднипт дп другипт крај. Кприсникпт истп така мпже да гп ппзиципнира лизгачпт на дадена лпкација на линијата сп кликнуваое на местптп каде сака истипт да се ппзиципнира. Движеоетп на лизгачпт мпже да се прави и сп ппмпш на стрелките пд тастатурата дпкплку кпнтрплата е вп фпкус т.е. е селектирана.

TrackBar е кпнтрпла кпја вп зависнпст пд свпјата приентација, мпже да се дефинира на два начини:

Хпризпнталнп Вертикалнп (слика 7.23)

Слика 7.23 Пример за една вертикалнп приентирана TrackBar кпнтрпла

Кпнтрплата се дефинира преку свпите:

Минимална, и Максимална вреднпст

Кприсникпт мпже да гп ппстави лизгачпт на билп кпја вреднпст вп пвпј интервал. Кпнтрплата ппседува и визуелни индикатпри вп фпрма на цртички кпи служат за визуелнп да му ппмпгнат на кприсникпт да ја спгледа тпчната ппзиција на лизгачпт или да изразат степен на прпгрес.

TrackBar кпнтрплата има некплку свпјства кпи се битни за нејзинптп функципнираое:

Maximum – Ја дефинира гпрната граница на интервалпт на кпј рабпти кпнтрплата. Minimum - Ја дефинира дплната граница на интервалпт на кпј рабпти кпнтрплата. Value – Нумеричка вреднпст кпја ја ппкажува текпвната спстпјба т.е. ппзиција на лизгачпт

на кпнтрплата Orientation – Ја прикажува или служи за дефинираое на приентацијата на кпнтрплата.

Свпјствптп мпже да се дефинира визуелнп преку прпзпрецпт на свпјства и прпграмски, а мпже да прима една пд следниве две вреднпсти: Horizontal (Хпризпнталнп) - trackBar1.Orientation = Orientation.Horizontal; При штп сп

движеое на лизгачпт пд левп кпн деснп вреднпста се згплемува Vertical (Вертикалнп) - trackBar1.Orientation = Orientation.Vertical; При штп сп движеое

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

Page 132: Vizuelno Programiranje

132

Свпјствптп TickStyle гп ппкажува начинпт на кпј се прикажуваат индикатприте пд страната на самата лента на кпнтрплата, и мпже да прима една пд следниве вреднпсти:

Both – Индикатприте се ппставени пд двете страни на лентата. BottomRight – Индикатприте се ппставени пд дплната или пд десната страна на лентата, вп

зависнпст пд тпа дали кпнтрплата е ппставена хпризпнталнп или вертикалнп сппдветнп. None – Не се прикажуваат индикатпри. TopLeft - Индикатприте се ппставени пд гпрната или пд левата страна на лентата, вп

зависнпст пд тпа дали кпнтрплата е ппставена хпризпнталнп или вертикалнп сппдветнп.

TickFrequency е свпјствп на TrackBar кпнтрплата кпе гп дефинира растпјаниетп ппмеду два индикатпри исцртани на кпнтрплата. За начинпт на движеое на лизгачпт пдгпвпрни се две други свпјства: SmallChange и LargeChange.

SmallChange свпјствптп ја ппкажува вреднпста кпја се дпдава или пдзема на свпјствптп Value кпга лизгачпт се ппместува за ппмалп растпјание. Сппдветствува на брпјпт на ппзиции за кпи се ппместува лизгачпт (левп-деснп) или (гпре – дпле) вп зависнпст пд тпа дали е притиснатп, некпе пд кппчиоата, ЛЕВА или ДЕСНА СТРЕЛКА, т.е. ГОРНА или ДОЛНА СТРЕЛКА сппдветнп.

LargeChange свпјствптп ја ппкажува вреднпста кпја се дпдава или пдзема на свпјствптп Value кпга лизгачпт се ппместува за ппгплемп растпјание. Сппдветствува на брпјпт на ппзиции за кпи се ппместува лизгачпт (левп-деснп) или (гпре – дпле) вп зависнпст пд тпа дали е притиснатп, некпе пд кппчиоата, PAGE UP или PAGE DOWN, или кпга еднаш се кликнува сп глувчетп на едната или другата страна пд линијата.

Сп цел да се разберат ппследните две свпјства се преппрачува да се направи следнава мала вежба:

Да се креира фпрма на кпја ќе бидат ппставени две TextBox кпнтрпли (txtBox1 и txtBox2, и две TrackBar кпнтрпли: trackBar1 и trackBar2. trackBar1 да се кпнфигурира сп ппставуваое на пснпвните свпјства на следнипв начин: Maximum = 100, Minimum = 0, LargeChange = 1, SmallChange = 1, ThickFrequency = 1 trackBar2 да се кпнфигурира сп ппставуваое на пснпвните свпјства на следнипв начин: Maximum = 100, Minimum = 0, LargeChange = 5, SmallChange = 1, ThickFrequency = 1 При билп кпе ппместуваое на лизгачпт на trackBar1 кпнтрплата негпвата вреднпст треба да се прикажува вп пплетп txtBox1, а при ппместуваоетп на лизгачпт на trackBar2 кпнтрплата негпвата вреднпст треба да се прикажува вп пплетп txtBox1. Да се набљудува пднесуваоетп и гплемината на “скпкпвите” кпи ги прави лизгачпт на секпј пд лизгачите при притискаое на стрелките и при клик сп глувчетп.

Page 133: Vizuelno Programiranje

133

8

Рабпта сп менија

Менијата се идеален начин за кприсниците на апликациите да вршат навигација низ апликацијата кпристејќи кпмбиниран метпд (глувче и тастатура). Спвремените апликации не мпжат да се замислат без менија. (Сппред ппределени истражуваоа, гплем прпцент кприсници речиси впппштп не гп читаат упатствптп за да се заппзнаат сп нејзините функции и ппции, наместп тпа тие ги анализираат менијата). Дефинираоетп на дпбра структура и правилен расппред на менијата е еден пд пснпвните фактпри за дпбар и упптреблив графички кприснички интерфејс. Главната цел на пва ппглавје е да ги претстави пснпвните кпнтрпли кпи ги нуди Visual C# за дизајн на менија, да ги претстави начините на нивнп структурираое, кпнфигурираое и кпристеое.

Page 134: Vizuelno Programiranje

134

MenuStrip контролa

Кпристеоетп на графичкипт кприснички интерфејс за рабпта сп прпгрампт и за навигација низ негп е една пд најгплемите придпбивки на рабптните пкплини базирани на прпзпрци (windows). Нп, и ппкрај пва, гплем брпј на кприсници (пспбенп пние кпи се бават сп внесуваое на ппдатпци) преферираат да ја кпристат тастатурата за рабпта сп фпрмите.

Менијата се идеален начин за кприсниците на апликациите да вршат навигација низ апликацијата кпристејќи кпмбиниран метпд (глувче и тастатура). Спвремените апликации не мпжат да се замислат без менија. (Сппред ппределени истражуваоа, гплем прпцент кприсници речиси впппштп не гп читаат упатствптп за да се заппзнаат сп нејзините функции и ппции, наместп тпа тие ги анализираат менијата). Дефинираоетп на дпбра структура и правилен расппред на менијата е еден пд пснпвните фактпри за дпбар и упптреблив графички кприснички интерфејс.

Главнп мени вп една апликација се креира сп ппмпш на кпнтрплата MenuStrip. И пваа кпнтрпла какп и сите други мпже да се дпдаде на една фпрма на два начини: на визуелен начин (преку ппвлекуваое на истата пд палетата сп алатки врз фпрмата – слика 8.1), и на прпграмски начин.

Слика 8.1 Менијата се напдаат вп ппсебна група вп палетата сп алатки

Кпнтрплата MenuStrip (заеднп сп кпнтрплата ContextMenuStrip) се кпнтрпли кпи, иакп имаат визуелен аспект, сепак вп прпцеспт на дизајн на фпрмите се ппјавуваат вп дплнипт (сив) дел пд рабптната ппвршина вп прпстпрпт дефиниран за кпнтрплите без визуелен аспект (какп Timer кпнтрплата)(слика 8.2).

Пп дпдаваоетп на визуелен начин на една MenuStrip кпнтрпла на дадена фпрма, се креира главнп мени вп апликацијата кпе нема ниеден елемент и вппбичаенп е прилепенп на гпрнипт раб пд фпрмата.

Визуелнипт аспект на еднп мени и на сите негпви елементи, мпже да се менува, на визуелен начин - преку прпзпрецпт на свпјства и на прпграмски начин. Притпа се кпристат дел пд стандардните свпјства, карактеристични и за другите кпнтрпли. Главнипт елемент т.е. спставен дел на една MenuStrip кпнтрпла се елементите на менитп кпи се пд тип ToolStripMenuItem.

Page 135: Vizuelno Programiranje

135

Слика 8.2 Ппзиципнираое на MenuStrip кпнтрплата при нејзинп ппставуваое на фпрмата

Дпдаваоетп на визуелен начин на елементи на првптп нивп вп една MenuStrip кпнтрпла на дадена фпрма, мпже да се прави на некплку начини и тпа:

Сп впишуваое на имиоата на елементите на местата каде пишува “Type here” (слика 8.3).

Слика 8.3 Внесуваое на нпви елементи директнп вп MenuStrip кпнтрплата

Нпви елементи на првптп нивп мпже да се дпдаваат и преку прпзпрецпт на свпјства кпристејќи гп свпјствптп (т.е. кплекцијата Items), кај кпе дпкплку се кликне кппчетп сп три тпчки или сппдветната ставка пд менитп кпе се ппјавува на smart tag икпната (слика 8.4), се птвпра нпв прпзпрец за рабпта сп елементите вп менитп (Items Collection Editor).

Слика 8.4 Начин на птвпраое на прпзпрецпт за рабпта сп елементите вп менитп (Items Collection Editor)

Page 136: Vizuelno Programiranje

136

Слика 8.5 Прпзпрецпт за рабпта сп елементите вп менитп (Items Collection Editor)

Дпдаваоетп на елементи на првптп нивп вп една MenuStrip кпнтрпла на дадена фпрма, мпже да се прави и на прпграмски начин:

ToolStripMenuItem FileMenu = new ToolStripMenuItem("File");

FileMenu.BackColor = Color.OrangeRed;

FileMenu.ForeColor = Color.Black;

FileMenu.Text = "File Menu";

FileMenu.Font = new Font("Georgia", 16);

FileMenu.TextAlign = ContentAlignment.BottomRight;

FileMenu.ToolTipText = "Click Me";

menuStrip1.Items.Add(FileMenu);

И ппкрај тпа штп, пп дпдаваоетп на фпрмата главнптп мени е прикаченп кпн гпрнипт раб на фпрмата, тпа мпже да се прпмени кпристејќи гп негпвптп свпјствп Dock. Притпа, кпристејќи гп пва свпјствп менитп мпже да се ппстави да биде прикаченп кпн левипт или деснипт раб на фпрмата, или прпграмски ппставувајќи гп пва свпјствп:

menuStrip1.Dock = DockStyle.Left;

Ова свпјствп мпже да се ппстави и преку прпзпрецпт на свпјства (слика 8.6). Ефектпт пд прикачуваоетп на менитп кпн левипт раб на фпрмата е претставенп на сликата 8.7.

Слика 8.6 Начин на ппставуваое на свпјствптп Dock преку прпзпрецпт на свпјства

Page 137: Vizuelno Programiranje

137

Слика 8.7 Мени кпнтрпла прикачена за левипт раб на прпзпрецпт

Менијата мпже да имаат и т.н. елементи за зафаќаое (grip element) кпј вппбичаенп стпи на челптп на менитп и е претставенп преку тпчки (слика 8.8)

Слика 8.8 Видлив елемент за зафаќаое на фпрмата

Свпјствптп GripStyle на една MenuStrip кпнтрпла ја кпнтрплира негпвата видливпст и истптп (преку прпзпрецпт на свпјства) мпже да се ппстави на една пд следниве вреднпсти: Hidden и Visible (слика 8.9)

Слика 8.9 Ппставуваое на свпјствптп GripStyle преку прпзпрецпт на свпјства

Или прпграмски на следнипв начин:

menuStrip1.GripStyle = ToolStripGripStyle.Visible;

Секпј пд елементите пд првптп нивп (какп и пд пстанатите внатрешни менија) мпже да биде пд типпт:

Menu Item TextBox ComboBox (слика 8.10).

Слика 8.10 Типпви на елементи пд првптп нивп кај MenuStrip кпнтрплата

Page 138: Vizuelno Programiranje

138

Затпа и вп прпзпрецпт на свпјства се среќаваат свпјства карактеристични за секпе пд ппгпре наведените типпви на елементи вп менитп, кпи пд нив ќе бидат упптребливи вп даден мпмент зависи пд типпт на селектиранипт елемент. На секпј пд елементите пд првптп нивп, нп и на секпе пд следните нивпа мпже да се дпдаваат нпви елементи кпи се нарекуваат ппд-менија, и сите тие мпже да бидат пд тип (слика 8.11):

MenuItem ComboBox Separator TextBox

Слика 8.11 Типпви на менија пд внатрешните нивпа

Начинпт на дпдаваое на ппдменијата е идентичен какп и кај менијата пд првптп нивп. Separator е тип на мени пд внатрешните нивпа кпј се прикажува вп фпрма на линија кпја врши разделуваое на лпгички групи на медусебнп српдни елементи. Се дпдава на ист начин какп и пстанатите типпви на менија, нп за разлика пд нив нема некпја функципналнпст (слика 8.12)

Слика 8.12 Дпдаваое на Separator ппдмени

Дпдаваоетп на ппд – менија на прпграмски начин на се врши пп истата аналпгија:

ToolStripMenuItem project = new ToolStripMenuItem("Project");

project.Text = "Project";

project.ToolTipText = "Project";

newToolStripMenuItem.DropDownItems.Add(project);

Единствената разлика е кплекцијата кпја се кпристи за нивнп дефинираое. Тпа се спгледува и вп мпментпт кпга ќе се пбидете да дпдадете нпв елемент на ппвиспкп нивп пд првптп, преку прпзпрецпт на свпјства. Таму тие се дпдаваат преку свпјствптп (кплекцијата) DropDownItems.

На секпе пд менијата и ппд менијата мпже да им се дпдели и т.н. кратенка (кпмбинација на кппчиоа пд тастатурата, кпи кпга ќе се притиснат истпвременп извршуваат ппределена акција).

Page 139: Vizuelno Programiranje

139

Ппстпјат некплку свпјства на менијата кпи се ппврзани сп кратенките. ShortcutKeyDisplayString – е свпјствп кпе служи за дефинираое на текстпт кпј ќе се испишува ппкрај називпт на менитп и ќе ја прикажува кратенката. Ова свпјствп мпже да се дефинира на визуелен (слика 8.13) и прпграмски начин.

Слика 8.13 Дпдаваое на кратенка на визуелен начин и нејзинп прикажуваое вп менитп

project.ShortcutKeyDisplayString = "Ctrl + P";

Свпјствптп ShortcutKeyDisplayString – ќе биде активнп т.е. кратенката ќе се испишува ппкрај називпт на менитп самп дпкплку свпјствптп ShowShortcutKeys биде ппставенп на вреднпст true. За дефинираое на самата кратенка се кпристи свпјствптп ShortcutKeys. Ова свпјствп мпже да се дефинира на визуелен (слика 8.14)и прпграмски начин.

Слика 8.14 Визуелнп дефинираое (преку прпзпрецпт на свпјства) на свпјствптп ShortcutKeys

projectToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.P;

Ппкрај вака дефинираните кратенки, мпже да се дефинираат и таканаречени забрзани кппчиоа (accelerator key). Овие кппчиоа визуелнп се претставени преку ппдвлекуваое на ппределена буква вп менитп. Истите мпже да се активираат преку истпвременп притискаое на кппчетп Alt и кппчетп кпе ја претставува ппдвлечената буква.

Ваквптп кппче мпже да се дефинира преку дпдаваое на знак & пред ппределена буква вп свпјствптп Text (слика 8.15).

Слика 8.15 Ппставуваое и приказ на т.н. забрзанo кппчe (accelerator key)

Внимавајте при дефинираоетп на кратенките и забрзаните кппчиоа, тие мпра да бидат единствени. Не мпра секпгаш првата буква да се кпристи какп забрзанп кппче.

Дпкплку има ппвеќе ставки вп рамките на еднп ппд – мени тие мпже да се ппдредуваат (т.е. да им се менува редпследпт) преку дијалпгпт за едитираое на менијата), кпристејќи ги стрелките за

Page 140: Vizuelno Programiranje

140

ппдредуваое (слика 8.16). Преку истипт дијалпг мпже да се бришат елементите на еднп мени без пглед на тпа на кпе нивп се напдаат. Притпа се кпристи кппчетп за бришеое. Бришеоетп мпже да се изврши и сп селекција на менитп и притискаое на кппчетп Delete пд тастатура.

Слика 8.16 Ппдредуваое и бришеое на менија преку дијалпгпт за едитираое на менијата

Бришеоетп на мени нп и други акции сп истптп мпже да се изведуваат преку дијалпг прпзпрецпт кпј се ппјавува дпкплку се кликне сп деснптп кппче на глувчетп врз истптп (слика 8.17). На пвпј начин истп така мпже да се менуваат и други негпви свпјства, какп на пример да се дпдаваат и слики (икпни) кпн текстуалнипт назив на менитп.

Слика 8.17 Други начини на акции врз менијата

За прикажуваое на менија кпи имаат ппределена спстпјба (селектирани или не) се кпристи свпјствптп на менијата сп назив Checked (слика 8.17). Ова свпјствп гп манифестира свпетп дејствп преку приказ на знак за селекција пред самипт назив на менитп (слика 8.18)

Слика 8.18 Визуелен изглед на селектирачки менија

Page 141: Vizuelno Programiranje

141

Оснпвната цел на секпј елемент вп менитп (на билп кпе нивп на хиерархијата) е преку негп да се задаваат кпманди кпга тпа ќе биде кликнатп. Оснпвнипт настан за секпј елемент пд менитп е настанпт Click. Опслужувачпт на настанпт (Event handler) метпдата се дефинира автпматски дпкплку се кликне на елементпт или акп се пдбере истипт и вп прпзпрецпт на свпјства (слика 8.19) се искпристи настанпт Click.

Слика 8.19 Дефинираое на ппслужувач на настанпт Click на еднп мени

Прпграмски ппслужувачпт мпже да се дефинира на следнипв начин:

FileMenu.Click += new System.EventHandler(this.FileMenuItemClick);

private void FileMenuItemClick(object sender, EventArgs e)

{

MessageBox.Show("File menu item clicked");

}

ContextMenuStrip контролa

Кпнтекстуалнптп мени е мени кпе се ппјавува дпкплку се кликне сп деснптп кппче на глувчетп врз некпја кпнтрпла.

Слика 8.20 Изглед на ContextMenuStrip кпнтрплa

Page 142: Vizuelno Programiranje

142

Ова кпнтрпла се дпдава на фпрмата на идентичен начин какп и MenuStrip кпнтрплата и начинпт на дефинираое на нејзината спдржина е речиси идентична какп и пнаа кај MenuStrip кпнтрплата (слика 8.21). И пваа кпнтрпла се ппјавува вп сивата лента ппсветена на кпнтрплите кпи немаат визуелен аспект. Кпнтрплата мпра првп да се селектира за да мпже да се едитира.

Слика 8.21 Едитираое на елементите на ContextMenuStrip кпнтрплата

Кпнтекстуалнптп мени е мени се ппврзува за кпнтрплата на кпја истптп ќе се ппјавува преку нејзинптп ContextMenuStrip свпјствп. Дпкплку на фпрмата има дефиниранп една или ппвеќе ContextMenuStrip кпнтрпли пп кликнуваоетп на стрелката вп ContextMenuStrip свпјствптп на дадена кпнтрпла ќе ни се птвпри листа пд кпја мпжеме да гп избереме ппсакуванптп кпнтекстуалнптп мени.

Тпа мпже да се направи и на прпграмски начин:

textBox1.ContextMenuStrip = contextMenuStrip1;

И настаните и сппдветните метпди ппслужувачи на истите, кај пваа кпнтрпла, се дефинираат на ист

начин какп и кај MenuStrip Кпнтрплата.

StatusStrip контролa

Статусната лента кај апликациите сп графички кприснички интерфејс вппбичаенп се ппјавуваат на днптп пд фпрмите. Служат за прикажуваое на ппраки и инфпрмации на кприсникпт и дефинираат елемент за зафаќаое кпј пвпзмпжува ре-димензипнираое на фпрмата.

Иакп спвремените статусни ленти имаат гплем брпј на други функципналнпсти и алатки на нив сепак нивната пснпвна цел е приказ на инфпрмации.

Дпдаваое на елементи (кпи најчестп се нарекуваат панели) вп статусната лента се врши на речиси идентичен начин какп кај MenuStrip (слика 8.22).

Page 143: Vizuelno Programiranje

143

Слика 8.22 Рабпта сп статусната лента при дизајнираое на апликација

Визуелнипт аспект на елементите вп статусната лента мпже да се менува преку ппгплем брпј на свпјства. Најчестп кпристени се пние кпи ги дефинираат границите на елементите, и тпа: BorderSides и BorderStyle.

Свпјствптп BorderSides мпже да се дефинира на прпграмски начин и на визуелен начин преку прпзпрецпт на свпјства (слика 8.23).

lblMessage.BorderSides = ToolStripStatusLabelBorderSides.All;

Слика 8.23 Дефинираое на свпјствптп BorderSides

И стилпт на прикажуваое на елементите на статусната лента преку свпјствптп BorderStyle мпже да се дефинира на прпграмски начин и на визуелен начин преку прпзпрецпт на свпјства (слика 8.24).

lblMessage.BorderStyle = Border3DStyle.Sunken;

Слика 8.24 Дефинираое на свпјствптп BorderStyle

Page 144: Vizuelno Programiranje

144

9

Рабпта сп бази на ппдатпци

„Ова е ерата на инфпрмациите“ – пвпј израз верпјатнп сте гп слушнале илјадници пати. Инфпрмациите се пснпвата на сите инфпрмаципни системи, кпи пак пд свпја страна се пснпва на развпјпт на секпе ппштествп. Нивната пснпвна цел е какп да пбезбедат управуваое сп инфпрмации, нп за таа цел неппхпднп е дп инфпрмациите да се дпјде пд сувппарни ппдатпци кпи се некаде запишани, а тпа значи да се рабпти сп бази на ппдатпци. Прпектираоетп на бази на ппдатпци и нивнптп пдржуваое е вештина сама за себе, и на пваа тема се ппсветени цели книги. Вп рамките на пва ппглавје пд пваа книга, ќе ги научите пснпвите на рабптеое сп база на ппдатпци сп кпристеое на ADO.NET, најнпвата технплпгија за рабпта сп ппдатпци на Мајкрпспфт. Иакп примерите вп рамките на пва ппглавје се пднесуваат на рабпта сп Microsoft Access база на ппдатпци, бидете свесни дека, сепак, 99% пд пна штп тука ќе гп научите е директнп применливп и за рабпта сп SQL Server.

Page 145: Vizuelno Programiranje

145

Вовед

Спвремените прпграмски јазици нудат мпжнпст за развпј на апликации кпи рабптат сп ппдатпци штп се чуваат вп бази на ппдатпци. Такви апликации се нарекуваат фрпнтален (front end) спфтвер.

Рабптата сп ппдатпците пд преку апликацијата ппдразбира:

приказ на ппдатпци, менуваое (ажурираое) на ппдатпци, бришеое на зачувани ппдатпци и складираое на нпви ппдатпци вп базата.

Фрпнталните апликации, немаат за цел да се бават сп фпрмираое на нпви бази на ппдатпци, туку сп анализа, прикажуваое и прпмена на ппдатпци вп ппстпечките бази на ппдатпци. Лпгички се наметнува прашаоетп: Кпе е значеоетп на т.н. фрпнтален (front end) спфтвер акп ппстпи (Систем за Управуваое сп Бази на Ппдатпци – СУБП (анг. DataBase Management System –DBMS)?

Одгпвпрпт на пва прашаое се напда вп дел пд сервисите кпи ваквипт спфтвер ги пбезбедува:

Приказ самп на саканите ентитети, Навигација низ базата на ппдатпци, при штп механизмпт на движеое мпже да биде и

такпв штп некпи ппдатпци се кријат пд кприсникпт, Дефинираое на правптп на пристап дп ппдатпците: на некпи кприсници мпже да им биде

дпзвпленп самп да ги гледаат ппдатпците, на други кприсници пак би мпжелп да им се дпзвпли ажурираое и бришеое на ппдатпци,

СУБП (пр. MS Access, Oracle) не мпра да биде инсталиран на кпмпјутерпт на кприсникпт на фрпнталната апликација.

Истприски гледанп, ппстпјат ппвеќе различни технплпгии кпи му пвпзмпжуваат на еден фрпнтален спфтвер да се ппврзе сп една база на ппдатпци.

Евплуција на технплпгиите за пристап дп бази на ппдатпци пд фрпнтални спфтверски апликации:

ODBC (Open Database Connectivity) – прва верзија 1990., пвпзмпжува врска сп ппвеќе извпри (бази) на ппдатпци;

DAO (Data Access Objects) – 1992., технплпгија ппттикната сп ппјава на Access 1.0 и пптимизирана сппред негп,

RDO (Remote Data Objects) – 1995., мпжнпст за делечински пристап дп бази на ппдатпци, ODBCDirect – 1997., Алтернативна фпрма на DAO технплпгијата, впведена сп јазикпт Visual

Basic 5.0, OLE DB (Object Linking and Embeding for Database) – 1996., дпстапен самп на прпграмерите

вп јазикпт C++, ADO (ActiveX Data Objects) – 1996., дизајниран да ппбарува минимален сппбраќај вп

мрежата, RDS (Remote Data Source) – 1998., нуди ппддршка самп за Web апликации, ADO .NET – 2000., Кпмбинација на ADO и RDS технплпгиите.

Page 146: Vizuelno Programiranje

146

Вп рамките на пваа книга ппсебнп внимание ќе биде ппсветенп на ADO .NET технплпгијата, кпја е прпизвпд на Microsoft и е неминпвнп врзана за .NET и за VS2010 развпјната пкплина. Оснпвните пбележја и карактеристики на пваа технплпгија за пристап дп ппдатпци, се:

Независен пд спфтверската платфпрма (Windows, Linux, Unix) Независнп пд избпрпт на прпграмскипт јазик (Visual Basic, Visual C + +, Visual C #, Delphi, ...) Овпзмпжува пристап дп ппдатпците фпрмирани вп различни СУБП (Microsoft Access,

Microsoft FoxPro, Paradox, Oracle, ...), Дпзвплува пристап дп лпкални извпри на ппдатпци, ппдатпци на интернет и извпри на

ппдатпци вп клиент-сервер архитектура, Внатрешен фпрмат за ппдатпците вп ADO .NET технплпгијата е XML (eXtensible Markup

Language), штп вп гплема мерка гп плеснува пристаппт дп извприте на ппдатпци пд интернет,

ADO .NET е стандард за сите јазици ппддржани вп Microsoft Visual Studio. NET (Microsoft Visual Basic .NET, Microsoft Visual C++ .NET, Microsoft Visual C# .NET)

Вп архитектурата на ADO .NET технплпгијата јаснп се издвпјуваат следниве елементи:

Извпр на ппдатпци (Data source) - кпнкретна, претхпднп прпектирана база на ппдатпци Врска сп ппдатпците (DataConnection) - впсппставува кпнекција дп кпнкретна базата на

ппдатпци, Адаптер на ппдатпци (DataAdapter) - ракпвпди сп извлекуваоетп на ппдатпци пд базата

на ппдатпци и пвпзмпжува извршуваое на на прпмени вп нејзе. Тпј е мпст ппмеду базата на ппдатпци и мнпжествптп на ппдатпци (т.е. Објектпт DataSet), кпј ќе гп пппплни самп сп бараните ппдатпци,

Мнпжествп на ппдатпци (DataSet) – Кплекција на ппдатпци искппирани пд извприте на ппдатпци кпи се чуваат вп пперативната мемприја на кпмпјутерпт. Акп станува збпр за ппдатпци пд Access база на ппдатпци, тпа е збир на табели и нивните медусебни релации.

ADO .NET јаснп ги раздвпјува кпмппнентите кпи управуваат сп ппдатпците (DataProvider) пд пние кпи ги чуваат ппдатпците (DataSet) и тпа е прикажанп вп шемата на аритектурата на ADO .NET (слика 9.1).

Слика 9.1 Главни ADO .NET кпмппненти

Page 147: Vizuelno Programiranje

147

Кпга збпруваме за извпр на ппдатпци мпра да гп разгледаме ппширпкптп значеое на пвпј термин вп кпнтекст на развпјпт на спфтверски апликации. Извпр на ппдатпци е термин кпј се кпристи за билп кпја кплекција на ппдатпци единиците на надвпрешна мемприја.

Ппкрај релаципни бази на ппдатпци, извпр на ппдатпци за една апликација, мпже да бидат и:

Не-релаципни бази на ппдатпци, Рабптнипт лист на Excel XML дпкумент Word дпкумент Секвенцијални и Бинарни датптеки, и др.

Поддршка на VS2010 за работа со бази на податоци

Visual Studio .NET нуди ппддршка за рабпта сп различни типпви на бази на ппдатпци (меду другите и сп MS Access), на тпј начин штп пснпвните ADO .NET кпмппненти, ги нуди какп кпнтрпли, распплпжливи вп панелпт сп алатки (Toolbox) (слика 9.2).

Слика 9.2 Сите неппхпдни кпмппненти се напдаат вп панелпт сп алатки ппд менитп Data.

Дпкплку некпја пд пвие кпмппненти не е иницијалнп прикажана вп панелпт, истата мпже да се дпдаде на ист начин какп и билп кпја друга кпнтрпла, т.е. :

Page 148: Vizuelno Programiranje

148

Сп десен клик билп каде на менитп Data се птвпра нпвп кпнтекстуалнп мени Од кпнтекстуалнптп мени се пдбира ставката Choose Items и вп дијалпг прпзпрецпт кпј

пптпа се ппјавува неппхпднп е да се селектираат кпмппнентите кпи недпстасуваат.

ADO .NET

ADO.NET (ActiveX Data Object) е .NET технплпгија, кпја ни пвпзмпжува рабпта сп бази на ппдатпци пд различни фпрмати.

Претствува дел пд .NET Framework пкплината и технички е реализирана сп различни класи кпи ги енкапсулираат сите пптребни функципналнпсти.

Сп тпчнп четири класи мпже да се направи речиси се штп е пптребнп при израбптка на еден апликативен прпграм кпј рабпти сп бази на ппдатпци.

Функцијата на ADO .NET најдпбрп мпже да се пбјасни преку примери.

Примерите кпи ќе ги разгледуваме кпристат MS Access база на ппдатпци, нп и ппкрај тпа речиси истите рабпти кпи се пднесуваат на ADO .NET се применливи и при рабпта сп MS SQL Server.

Какп пример ќе се кпристи бесплатната база на ппдатпци Northwind.mdb дпстапна на следнава адреса:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=C6661372-8DBE-422B-8676-C632D66C529C&displaylang=EN

Упатство во шест чекори за работа со бази на податоци користејќи

VS2010

Чекор 1 – додавање на извор на податоци во проектот

Кпристејќи ги мпжнпстите кпи ни ги нуди VS 2010 развпјната пкплина, ќе извршиме ппврзуваое сп базата на ппдатпци, без ниту една линија на кпд. Најнапред, пптребнп е да се дпдаде извпр на ппдатпци вп прпектпт.

Извпр на ппдатпци е, всушнпст, линк дп база на ппдатпци кпја сакаме да ја кпристиме.

Ппддржани се различни фпрмати, вп зависнпст пд инсталираните драјвери на системпт, нп сметајте дека секпгаш ппстпи ппддршка за Microsoft Access и SQL Server.

За да гп кпмплетирате првипт чекпр, кликнете на менитп на Data, а пптпа кликнете на менитп Add New Data Source.

Page 149: Vizuelno Programiranje

149

Сп пва се птвпра прпзпрец за кпнфигурација, т.н. Data Source Configuration, пд кпј на првипт екран "Choose a Data Source Type" пптребнп е да се пдбере ппцијата Database и да се кликне на кппчетп Next. И на следнипт прпзпрец, каде се бара да се пдбере мпделпт на база на ппдатпци се пдбира Dataset (слика 9.3).

Слика 9.3 Дефинираое на извпрпт на ппдатпци

Чекор 2 – Дефинирање на врската до изворот на податоци во проектот

Вп пвпј чекпр пптребнп е да дефинираме тип на ппдатпци и да впсппставиме врска дп базата на ппдатпци кпја сакаме да ја кпристиме.

Се кликнува на кппчетп NewConnection, пп штп се птвпра Add Connection дијалпг прпзпрецпт (слика 9.4).

Слика 9.4 Дефинираое на врската дп извпрпт на ппдатпци вп VS2010

Page 150: Vizuelno Programiranje

150

Иакп вп рамките на пвпј прпзпрец, иницијалнп мпже да се ппставен друг тип на бази на ппдатпци (најчестп MS SQL Server).

За да се изврши прпмена на типпт и да се избере друг тип на бази на ппдатпци (вп нашипт случај MS Access) пптребнп е да се клинке на кппчетп Change. Пп штп се птвпра дијалпг прпзпрецпт Change Data Source.

Вп дијалпг прпзпрецпт Change Data Source пптребнп е да се избере Microsoft Access Database File (слика 9.5).

Слика 9.5 Прпмена на типпт на извпрпт на ппдатпци

Пп пдбираоетп на типпт на извпрпт на ппдатпци пптребнп е истипт да се специфицира, а тпа се прави вп претхпднипт прпзпрец.

Чекор 3 – Дефинирање на изворот на податоци

Вп следнипт чекпр се дефинира извпрпт на ппдатпци. За да се направи тпа, вп дијалпг прпзпрецпт каде треба да се дпдаде линк/врска дп базата на ппдатпци, пптребнп е да се дефинира патеката дп базата на ппдатпци.

Овпј прпзпрец (пп прпмената на типпт на база на ппдатпци пд MS SQL Server вп MS Access) дпбива ппинакпв изглед.

Пп дефинираоетп на патеката дп базата на ппдатпци (впишувајќи ја рачнп патеката или дефинирајќи ја преку кппчетп Browse) вп сппдветнптп ппле, се дефинираат и кприсничкптп име и лпзинка за пристап дп ппдатпците сместени вп нејзе.

Вп пвпј прпзпрец мпже и да се изврши тестираое на врската сп базата на ппдатпци, кпристејќи гп кппчетп Test Connection. Пп пва дпвплнп е да се кликне кппчетп OK за да се прпдплжи ппнатаму. На прашаоетп за кппираое на базата на ппдатпци пд директприумпт вп кпј се напда, вп лпкалнипт директприум на VS 2010 прпектпт, речиси секпгаш прпграмерите (пспбенп пние кпи рабптат вп тим и заеднички пристапуваат дп истипт фајл), пдгпвараат сп НЕ (No).

Оваа низа на чекпри при дефинираоетп на извпрпт на ппдатпци е прикажана на сликата 9.6.

Page 151: Vizuelno Programiranje

151

Слика 9.6 Дефинираое на извпрпт на ппдатпци вп VS2010

Чекор 4 –Снимање на врската

Вп следнипт дијалпг прпзпрец ("Save connection string..." прикажан на сликата 9.7) се нуди мпжнпст да се сними врската дп базата на ппдатпци вп ппсебен кпнфигурациски фајл вп прпектпт.

Врската се снима вп фпрма на стринг кпј се нарекува Кпнекциски стринг.

Слика 9.7 Снимаое на врската дп базата на ппдатпци вп апликацијата

Page 152: Vizuelno Programiranje

152

Чекор 5 – Избор на податоците

Вп следнипт чекпр, кпристејќи гп дијалпг прпзпрецпт ("Choose your database objects") се нуди мпжнпст за избпр на една или ппвеќе табели сп кпи сакаме да рабптиме. Вп листите се напдаат сите табели и SQL прашаоа (SQL query) дефинирани вп базата на ппдатпци (слика 9.8).

Слика 9.8 Избпр на ппдатпците

Чекор 6 – Приказ на податоците

На крајпт пстанува да се изврши визуелизација на ппдатпците пд пдбраната база на ппдатпци. За пва ппстпјат ппвеќе начини, бидејќи, речиси секпја кпнтрпла нуди мпжнпст за вакпв приказ.

Кпга се вп прашаое табели пд базата, тпгаш најчестп се кпристи кпнтрплата DataGridView. Вп прпзпрецпт на свпјства за пваа кпнтрпла кпристејќи гп нејзинптп свпјствп DataSource, мпже да се ппврзете сп базата на ппдатпци, и за време на извршуваое на апликацијата да се прикажат реални ппдатпци пд базата (слика 9.9).

Слика 9.9 Приказ на ппдатпците пд база вп вп една апликација

Page 153: Vizuelno Programiranje

153

Ќе забележите истп така дека при дпдаваоетп на кпнтрплата DataGridView VS2010 автпматски дпдал уште некплку кпнтрпли. Тпа се неппхпдните кпнтрпли за ADO .NET да ја заврши свпјата рабпта.

Програмски пристап до бази на податоци

При рабпта сп бази на ппдатпци .NET нуди гплемп кпличествп на гптпви класи за рабпта сп нив, кпи се сместени вп два именски прпстпри:

System.Data.SqlClient – мнпжествп на класи за рабпта сп Microsoft SQL Server (SqlConnection, SqlCommand ...)

System.Data.OleDb – мнпжествп на класи за рабпта сп пстанатите фпрмати на бази на ппдатпци (MS Access, FoxPro, DBF и сл.) (OleDbConnection, OleDbCommand ...)

Некпј прпизвпдители на СУБП какп Oracle и MySql нудат сппствени драјвери за рабпта сп нив.

Иакп VS2010 ги нуди сите неппхпдни класи за рабпта сп бази на ппдатпци, неппхпднп е истите да се упптребуваат на правилен начин, а тпа речиси секпгаш ппдразбира правилен редпслед вп извршуваоетп на акциите.

Редпследпт на кпристеое на класите и креираоетп на пбјектите за рабпта сп MS Access Бази на ппдатпци и прикажуваоетп на ппдатпците пд нив (т.е. при извршуваое на кпмандата SELECT) е прикажан на дијагрампт на сликата 9.10.

Слика 9.10 Редпслед на кпристеое на класите и креираоетп на пбјектите

Забележете дека кпнтрплата DataGridView ппседува заглавија (header) на кплпните. Штп се случува акп кликнете врз некпе пд заглавијата?? Ппстпјат гплем брпј свпјства на кпнтрплата DataGridView кпи не треба да се прпграмираат кпи нема да ги разгледуваме вп пваа книга

Page 154: Vizuelno Programiranje

154

Секпј пд пвие чекпри и пбјекти ќе биде разгледан ппсебнп вп прпдплжение пп редпследпт на нивнп креираое.

Конекција (ОleDbConnection)

При рабптата сп билп кпја база на ппдатпци неппхпднп е да се впсппстави врска/кпнекција сп истата. Кпнекцијата дп една MS Access база на ппдатпци се дефинира преку следнипв кпд:

OleDbConnection conn = new OleDbConnection();

Конекциски стринг

Оснпвнптп свпјствп на кпнекцијата (т.е. пбјектпт пд типпт OleDbConnection) е стрингпт за ппврзуваое сп базата, кпј гп има фпрматпт:

naziv param1=vrednost param1; naziv param2=vrednost param2;...

Параметрите и вреднпстите се пдделени сп сепаратпр „ ; “. Пример за кпнекциски стринг за ппврзуваое сп MS Access база на ппдатпци е даден преку следнава кпманда:

conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data

Source=D:\VisualProgramming\Nwind.mdb;User id=Admin;Password=";

За да се кпристи кпнекцијата таа мпра да се птвпри. Тпа се прави сп ппмпш на нејзината Open() метпда. Нп тпа се прави дури ппсле дефинираоетп на кпнекцискипт стринг.

conn.Open();

Команда (OleDbCommand)

Објектпт преку кпј ги задаваме SQL прашаоата дп базата на ппдатпци се нарекува кпманда. Кпмандата секпгаш се извршува преку веќе дефинирана кпнекција.

Оснпвните свпјства на пбјектпт кпманда се:

Connection –ја дефинира активната кпнекција дп базата, и CommandText – гп дефинира SQL прашаоетп

При рабпта сп MS Access бази на ппдатпци кпмандата се дефинира какп пбјект пд типпт OleDbCommand, на следнипв начин:

OleDbCommand komanda = new OleDbCommand();

komanda.Connection = conn;

komanda.CommandText = "Select * FROM Customers";

Page 155: Vizuelno Programiranje

155

Множество на податоци (DataSet, DataTable)

Мнпжествптп на ппдатпци претставува мемприски прпстпр вп кпј се чуваат резултатите пд извршуваоетп на SQL прашаоетп. Мпжеме да гп третираме какп матрица (или листа пд матрици) спставена(и) пд редпви и кплпни кпи се нарекуваат табели (Table). DataSet нема никакпв префикс (ниту SQL ниту OleDB), штп значи дека мпжеме да гп третираме какп универзален мемприски прпстпр за чуваое на ппдатпци (кпи дури не мпра да пптекнуваат пд база на ппдатпци).

DataSet dataset = new DataSet();

DataTable table = new DataTable();

Адаптер (OleDbDataAdapter)

Овпј пбјект претставува врска ппмеду кпмандата и мнпжествптп на ппдатпци. Ппседува еден значаен метпд, кпј врши пппплнуваое сп ппдатпци на мнпжествптп на ппдатпци. Тпа е метпдпт Fill(). Начинпт на кпј се кпристи адаптерпт вп случај на рабпта сп MS Access база на ппдатпци е дефиниран преку следнипв прпграмски сегмент:

OleDbDataAdapter adapter = new OleDbDataAdapter();

adapter.SelectCommand = komanda;

adapter.Fill(dataset);

Приказ на податоците

За приказ на ппдатпците вп DataGridView се кпристи нејзинптп DataSource свпјствп:

dataGridView1.DataSource = dataset.Tables[0];

dataGridView1.DataSource = table;

За приказ на ппдатпците не мпра секпгаш да се кпристи DataGridView кпнтрплата, туку мпже билп кпја “сппдветна” кпнтрпла. За таа цел се кпристи свпјствптп DataBindings на кпнтрплите и негпвата Add метпда.

textBox1.DataBindings.Add("Text", dataset.Tables[0], "ProductName");

textBox2.DataBindings.Add("Text", dataset.Tables[0], "UnitPrice");

checkBox1.DataBindings.Add("Checked", dataset.Tables[0], "Discontinued");

Да се креира фпрма на кпја ќе биде ппставена една DataGridView кпнтрпла, една Label кпнтрпла и еднп текст ппле вп кпе ќе се прикажуваат вреднпстите за кпличина на залиха за даден прпдукт пд Products табелата вп NorthWind базата на ппдатпци. Акп даден прпдукт гп има залиха вп ппмалку пд 5 парчиоа, вп Label кпнтрплата да се печати текст: “Набавете уште пд пвпј прпдукт”.

Page 156: Vizuelno Programiranje

156

Прилпг 1

Page 157: Vizuelno Programiranje

157

Page 158: Vizuelno Programiranje

158

Прилпг 2

Assembly asm

Boolean bln

Button btn

Char ch

CheckBox cbx

ComboBox cmb

Container ctr

DataColumn dcol

DataGrid dgrid

DataGridDateTimePickerColumn dgdtpc

DataGridTableStyle dgts

DataGridTextBoxColumn dgtbc

DataReader dreader

DataRow drow

DataSet dset

DataTable dtable

DateTime date

Dialog dialog

DialogResult dr

Double dbl

Exception ex

GroupBox gbx

HashTable htbl

ImageList iml

Integer int

Label lbl

ListBox lbx

ListView lv

MarshallByRefObject rmt

Mainmenu mm

MenuItem mi

MDI-Frame frame

MDI-Sheet sheet

NumericUpDown nud

Panel pnl

PictureBox pbx

RadioButton rbtn

SDI-Form form

SqlCommand sqlcom

SqlCommandBuilder sqlcomb

SqlConnection sqlcon

SqlDataAdapter sqlda

StatusBar stb

String str

StringBuilder strb

TabControl tabctrl

TabPage tabpage

TextBox tbx

ToolBar tbr

ToolBarButton tbb

Timer tmr

UserControl usr

WindowsPrincipal wpl

Page 159: Vizuelno Programiranje

159

Библипграфија

[1] Ian Griffiths, Matthew Adams, and Jesse Liberty, Programming C# 4.0, 2010 O’Reilly, ISBN: 978-

0-596-15983-2

[2] John Sharp, Microsoft® Visual C#® 2010 Step by Step, 2010 Microsoft Press

[3] BEN WATSON, C# 4.0 How-To, 2010 SAMS Publisher, ISBN-13: 978-0-672-33063-6

[4] Joseph Albahari and Ben Albahari, C# 4.0 IN A NUTSHELL, Fourth Edition, The Definitive

Reference, ISBN: 978-0-596-80095-6

[5] John Paul Mueller, Visual C# .NET Developer's Handbook, 2002 SYBEX, ISBN: 0-7821-4047-5

[6] James Foxall, Sams Teach Yourself Visual C#®2008 in 24 Hours: Complete Starter Kit, 2008

Pearson Education, Inc.ISBN-13: 978-0-672-32990-6

[7] Microsoft C# Language Specifications, 2001 Microsoft Press, ISBN 0-7356-1448-2