powerpoint презентация (1,34 mb)

139

Upload: trinhduong

Post on 14-Feb-2017

240 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: PowerPoint презентация (1,34 MB)
Page 2: PowerPoint презентация (1,34 MB)

Windows FormsWindows Forms

Програмиране за .NET FrameworkПрограмиране за .NET Frameworkhttp://www.nakov.com/dotnet/http://www.nakov.com/dotnet/

Изграждане на графичен Изграждане на графичен потребителски интерфейс спотребителски интерфейс с

Светлин НаковСветлин НаковНационална академия по Национална академия по разработка на софтуерразработка на софтуерacademy.devbg.orgacademy.devbg.org

Page 3: PowerPoint презентация (1,34 MB)

Необходими знанияНеобходими знания Базови познания за .NET FrameworkБазови познания за .NET Framework Базови познания за езика C#Базови познания за езика C# Базови познания за делегатите и Базови познания за делегатите и

събитията в .NET Frameworkсъбитията в .NET Framework Начални умения за работа с Начални умения за работа с Visual Visual

Studio .NETStudio .NET и и Windows Forms Windows Forms редактора муредактора му

Page 4: PowerPoint презентация (1,34 MB)

СъдържаниеСъдържание Какво е Windows Forms?Какво е Windows Forms? Програмни компоненти. Компонентен модел Програмни компоненти. Компонентен модел

на .NETна .NET Програмен модел на Windown FormsПрограмен модел на Windown Forms Основни класове. Йерархия на класоветеОсновни класове. Йерархия на класовете Класът Класът ControlControl. Други базови контроли. Други базови контроли Модел на пречертаване на контролитеМодел на пречертаване на контролите Форми, прозорци и диалози – класът Форми, прозорци и диалози – класът FormForm Основни контроли – Основни контроли – TextBoxTextBox, , LabelLabel, , ButtonButton Поставяне на контроли във форматаПоставяне на контроли във формата Управление на събитиятаУправление на събитията Windows Forms редакторът на VS.NETWindows Forms редакторът на VS.NET

Page 5: PowerPoint презентация (1,34 MB)

СъдържаниеСъдържание (2) (2) Стандартни диалогови кутииСтандартни диалогови кутии Извикване на диалогови кутииИзвикване на диалогови кутии Други Windows Forms контроли. Менюта. Други Windows Forms контроли. Менюта.

Ленти с инструменти. Статус лентиЛенти с инструменти. Статус ленти Диалог за избор на файлДиалог за избор на файл MDI приложенияMDI приложения Валидация на данниВалидация на данни Свързване на данни (Data Binding). Навигация Свързване на данни (Data Binding). Навигация

с с CurrencyManagerCurrencyManager Контролата Контролата DataGridDataGrid Master-Details навигацияMaster-Details навигация Наследяване на формиНаследяване на форми

Page 6: PowerPoint презентация (1,34 MB)

СъдържаниеСъдържание (3) (3) Пакетът Пакетът System.DrawingSystem.Drawing и GDI+ и GDI+ Печатане на принтерПечатане на принтер Потребителски контролиПотребителски контроли Хостинг на контроли в Хостинг на контроли в Internet ExplorerInternet Explorer Нишки и Windows FormsНишки и Windows Forms Влачене (Drag and Drop)Влачене (Drag and Drop) Конфигурационен файл на приложениетоКонфигурационен файл на приложението

Page 7: PowerPoint презентация (1,34 MB)

Какво е Какво е Windows Forms?Windows Forms? Windows FormsWindows Forms

Библиотека за изграждане на Библиотека за изграждане на прозоречно-ориентиран графичен прозоречно-ориентиран графичен потребителски интерфейс (GUI)потребителски интерфейс (GUI)

Поддържа концепцията за Rapid Поддържа концепцията за Rapid Application Development (RAD)Application Development (RAD) компонентно-ориентирана архитектуракомпонентно-ориентирана архитектура управление, базирано на събитияуправление, базирано на събития

Прилича на Прилича на GUIGUI средствата на Delphi и средствата на Delphi и Visual Basic 6, с мощта на MFCVisual Basic 6, с мощта на MFC

Съдържа богат набор от контролиСъдържа богат набор от контроли Data-aware компонентиData-aware компоненти

Page 8: PowerPoint презентация (1,34 MB)

Какво е Какво е Windows Forms?Windows Forms? Windows FormsWindows Forms

Вградена поддръжка на UnicodeВградена поддръжка на Unicode Позволява наследяване и разширяване Позволява наследяване и разширяване

на форми и контролина форми и контроли Поддържа ActiveX контролиПоддържа ActiveX контроли Поддържа печатане на принтерПоддържа печатане на принтер Контролите могат да се изпълняват в Контролите могат да се изпълняват в

Internet ExplorerInternet Explorer подобно на Java аплетитеподобно на Java аплетите без предварителна регистрация (за разлика без предварителна регистрация (за разлика

от ActiveX контролите)от ActiveX контролите) Силна поддръжка на графика (GDI+)Силна поддръжка на графика (GDI+)

Page 9: PowerPoint презентация (1,34 MB)

Windows FormsWindows Forms – – примерпримерpublic class SampleForm : System.Windows.Forms.Formpublic class SampleForm : System.Windows.Forms.Form{{ static void Main()static void Main() {{ SampleForm sampleForm = new SampleForm();SampleForm sampleForm = new SampleForm(); sampleForm.Text = "Sample Form";sampleForm.Text = "Sample Form"; Button button = new Button();Button button = new Button(); button.Text = "Close";button.Text = "Close"; button.Click += button.Click += new EventHandler(sampleForm.button_Click);new EventHandler(sampleForm.button_Click); sampleForm.Controls.Add(button);sampleForm.Controls.Add(button); sampleForm.ShowDialog();sampleForm.ShowDialog(); }}

private void button_Click(object sender, EventArgs e)private void button_Click(object sender, EventArgs e) {{ Close();Close(); }}}}

Page 10: PowerPoint презентация (1,34 MB)

Демонстрация #1Демонстрация #1 Нашето първо Нашето първо Windows Forms Windows Forms

приложениеприложение

Page 11: PowerPoint презентация (1,34 MB)

Пакетите от Windows FormsПакетите от Windows Forms

System.DrawingSystem.DrawingDrawing2DDrawing2DImagingImaging

PrintingPrintingTextText

System.Windows.FormsSystem.Windows.FormsDesignDesign ComponentModelComponentModel

Осигурява достъп до GDI+ функциите на Windows – работа

с точки, линии, геометрични фигури, изобразяване на

картинки, текст, шрифтове, печатане на принтер и др.

Осигурява средства за работа с прозорци, диалози, контроли за въвеждане на текст, за избор, менюта, ленти с инструменти,

таблици, дървета и др.

Page 12: PowerPoint презентация (1,34 MB)

Програмни компонентиПрограмни компоненти КомпонентиКомпоненти

Програмни единици (класове), които Програмни единици (класове), които решават специфична задачарешават специфична задача

Преизползваеми (Преизползваеми (reusable)reusable) Имат ясно дефиниран интерфейс, който Имат ясно дефиниран интерфейс, който

описва техните:описва техните: свойствасвойства методиметоди събитиясъбития

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

Page 13: PowerPoint презентация (1,34 MB)

Компонентен модел на Компонентен модел на .NET.NET Компонентният модел дефинира:Компонентният модел дефинира:

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

жизнен цикъл на компонентитежизнен цикъл на компонентите Компонентният модел на Компонентният модел на .NET .NET

Framework Framework налага правила за създаване и налага правила за създаване и

използване на използване на .NET.NET компоненти компоненти (програмен модел)(програмен модел)

дефинира класове и интерфейси, които дефинира класове и интерфейси, които поддържат описанието на компонентиподдържат описанието на компоненти

Page 14: PowerPoint презентация (1,34 MB)

Компонентен модел на Компонентен модел на .NET.NET Компонентният модел на .Компонентният модел на .NETNET

позволява дефиниране на поведението на позволява дефиниране на поведението на компонентитекомпонентите по време на дизайн (по време на дизайн (design-timedesign-time behaviorbehavior)) по време на работа (по време на работа (runtime behaviorruntime behavior))

осигурява лесна преизползваемост осигурява лесна преизползваемост ((reusability)reusability)

дефинира компоненти и контейнеридефинира компоненти и контейнери CLR CLR осигурява междуезикова осигурява междуезикова

съвместимост на компонентитесъвместимост на компонентите Основната функционалност на Основната функционалност на

компонентния модел се намира в компонентния модел се намира в System.ComponentModelSystem.ComponentModel

Page 15: PowerPoint презентация (1,34 MB)

Windows Forms Windows Forms и комп. модели комп. модел Windows Forms Windows Forms е базиран на е базиран на

компонентния модел на компонентния модел на .NET.NET Компонентният модел дефинира Компонентният модел дефинира

компоненти и контейнерикомпоненти и контейнери Windows Forms Windows Forms дефинира контроли и дефинира контроли и

контейнер-контроликонтейнер-контроли Контролите са видими за Контролите са видими за

потребителя компоненти:потребителя компоненти: контейнер-контроли (форми, диалози, контейнер-контроли (форми, диалози,

панели, ...) – съдържат други контролипанели, ...) – съдържат други контроли контроли (бутони, текстови полета, ...) – контроли (бутони, текстови полета, ...) –

съдържат се в контейнер контролитесъдържат се в контейнер контролите

Page 16: PowerPoint презентация (1,34 MB)

Програмен модел на Програмен модел на WinFormsWinForms Програмният модел на Програмният модел на Windows FormsWindows Forms

дефинира:дефинира: форми (прозорци и диалози)форми (прозорци и диалози) контроли (текстови полета, бутони, менюта, контроли (текстови полета, бутони, менюта,

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

Жизненият цикъл на приложенията е Жизненият цикъл на приложенията е базиран на съобщениябазиран на съобщения Контролите получават съобщения за Контролите получават съобщения за

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

Page 17: PowerPoint презентация (1,34 MB)

Програмен модел на Програмен модел на WinFormsWinForms Главната нишка на всяко Главната нишка на всяко Windows Windows

Forms Forms приложение работи така:приложение работи така: Постоянно слуша за съобщенияПостоянно слуша за съобщения При получаване на съобщение (напр. При получаване на съобщение (напр.

преместване на мишката, натискане на преместване на мишката, натискане на клавиш или др.) го обработва така:клавиш или др.) го обработва така: намира контролата, за която се отнася намира контролата, за която се отнася

съобщениетосъобщението предава й съобщениетопредава й съобщението ако контролата е контейнер-контрола, тя ако контролата е контейнер-контрола, тя

търси в себе си за коя от нейните контроли търси в себе си за коя от нейните контроли е съобщението и й го предавае съобщението и й го предава

При затваряне на главната форма на При затваряне на главната форма на приложението, то спира изпълнението сиприложението, то спира изпълнението си

Page 18: PowerPoint презентация (1,34 MB)

Основни класовеОсновни класове Библиотеката Библиотеката Windows Forms Windows Forms дефинира:дефинира:

съвкупност от базови класове за съвкупност от базови класове за контролите и контейнер-контролитеконтролите и контейнер-контролите

множество графични контролимножество графични контроли Основни базови класове:Основни базови класове:

ComponentComponent – – .NET .NET компоненткомпонент ControlControl – графична контрола (компонента – графична контрола (компонента

с графичен образ)с графичен образ) ScrollableControlScrollableControl – контрола, която – контрола, която

поддържа скролиране на съдържанието сиподдържа скролиране на съдържанието си ContainerControlContainerControl – контрола, която – контрола, която

съдържа други контроли и управлява съдържа други контроли и управлява поведението на фокусаповедението на фокуса

Page 19: PowerPoint презентация (1,34 MB)

Йерархия на класоветеЙерархия на класоветеComponent

ControlMenu

Label PictureBox

ScrollableControl

Panel ContainerControl

Timer ImageList

ToolBar StatusBar DataGrid

TextBoxBase

TextBoxRichTextBox

Form UserControl

Page 20: PowerPoint презентация (1,34 MB)

Класът Класът ControlControl Класът Класът System.Windows.Forms.ControlSystem.Windows.Forms.Control е е

основа на всички графични Windows основа на всички графични Windows Forms контролиForms контроли

Неговите свойства са типични за всички Неговите свойства са типични за всички Windows Forms контролиWindows Forms контроли

По-важните свойства на класа По-важните свойства на класа ControlControl:: AnchorAnchor, , DockDock – задават по какъв начин – задават по какъв начин

контролата се "закотвя" за контейнера сиконтролата се "закотвя" за контейнера си BoundsBounds – задава размера и позицията на – задава размера и позицията на

контролата в нейния контейнерконтролата в нейния контейнер BackColorBackColor – задава цвета на фона – задава цвета на фона ContextMenuContextMenu – задава контекстно меню – задава контекстно меню

((popup menu)popup menu) за контролата за контролата

Page 21: PowerPoint презентация (1,34 MB)

Класът Класът ControlControl По-важните свойства на класа По-важните свойства на класа ControlControl::

ControlsControls – съдържа колекция от – съдържа колекция от вложените контроли (ако има)вложените контроли (ако има)

CanFocusCanFocus – връща дали контролата може – връща дали контролата може да получава фокусада получава фокуса

EnabledEnabled – позволява забраняване на – позволява забраняване на контролата (тя става видима, но неактивна)контролата (тя става видима, но неактивна)

FontFont – задава шрифта (име, стил, размер) – задава шрифта (име, стил, размер) ForeColorForeColor – задава цвета на контролата – задава цвета на контролата LocationLocation – съдържа позицията на контрола – съдържа позицията на контрола

в нейния контейнерв нейния контейнер ParentParent – – задава контейнер-контролата, задава контейнер-контролата,

съдържаща текущата контроласъдържаща текущата контрола

Page 22: PowerPoint презентация (1,34 MB)

Класът Класът ControlControl По-важните свойства на класа По-важните свойства на класа ControlControl::

SizeSize – съдържа размерите на контролата – съдържа размерите на контролата TabIndexTabIndex – определя реда при навигация с – определя реда при навигация с

клавиша клавиша [TAB][TAB] TabStopTabStop – задава дали контролата може да – задава дали контролата може да

се фокусира при навигация с се фокусира при навигация с [TAB][TAB] TextText – – задава текст, свързан с контролата задава текст, свързан с контролата VisibleVisible – – задава видимост на контролатазадава видимост на контролата

По-важни методи на класа По-важни методи на класа ControlControl:: Focus()Focus() – – фокусира контролатафокусира контролата Hide()Hide(), , Show()Show() – – скрива/показва скрива/показва

контролатаконтролата

Page 23: PowerPoint презентация (1,34 MB)

Класът Класът ControlControl По-важните събития на класа По-важните събития на класа ControlControl::

ClickClick – настъпва при щракване с мишката – настъпва при щракване с мишката върху контролатавърху контролата

EnterEnter, , LeaveLeave – настъпват при активиране и – настъпват при активиране и деактивиране на контролатадеактивиране на контролата

KeyDownKeyDown, , KeyUpKeyUp – настъпват при натискане – настъпват при натискане и отпускане на клавиш (или комбинация)и отпускане на клавиш (или комбинация)

KeyPressKeyPress – при натискане на – при натискане на нефункционален клавишнефункционален клавиш

MouseDownMouseDown, , MouseUpMouseUp, , MouseHoverMouseHover, , MouseEnterMouseEnter, , MouseLeaveMouseLeave, , MouseMoveMouseMove, , MouseWheelMouseWheel – настъпват при събития от – настъпват при събития от мишката, настъпили върху контролатамишката, настъпили върху контролата

Page 24: PowerPoint презентация (1,34 MB)

Класът Класът ControlControl По-важните събития на класа По-важните събития на класа ControlControl::

MoveMove – настъпва при преместване на – настъпва при преместване на контролатаконтролата

PaintPaint – настъпва при пречертаване на – настъпва при пречертаване на контролатаконтролата

ResizeResize – настъпва при промяна на размера – настъпва при промяна на размера на контролатана контролата

TextChangedTextChanged – настъпва при промяна на – настъпва при промяна на свойството свойството TextText на контролата на контролата

ValidatingValidating – – използва се за валидация на използва се за валидация на данните, въведени в контролатаданните, въведени в контролата

Page 25: PowerPoint презентация (1,34 MB)

Пречертаване на контролитеПречертаване на контролите В В Windows Forms Windows Forms контролите често се контролите често се

пречертаватпречертават при преместване на прозорецпри преместване на прозорец при смяна на активния прозорецпри смяна на активния прозорец при промяна на размера или позицията на при промяна на размера или позицията на

някоя контроланякоя контрола Пречертаването става на два етапа:Пречертаването става на два етапа:

Invalidate()Invalidate() – – подготвя за пречертаване подготвя за пречертаване дадената контрола или неин участък и дадената контрола или неин участък и изпраща съобщение "пречертай"изпраща съобщение "пречертай"

Paint()Paint() – – обработва съобщението обработва съобщението "пречертай", изпратено от "пречертай", изпратено от Invalidate()Invalidate() и и обновява графично указания участъкобновява графично указания участък

Page 26: PowerPoint презентация (1,34 MB)

Други базови контролиДруги базови контроли Класът Класът ScrollableControlScrollableControl

добавя функционалност за скролиранедобавя функционалност за скролиране AutoScrollAutoScroll – задава дали при нужда – задава дали при нужда

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

HScrollHScroll, , VScrollVScroll – задават дали – задават дали контролата да има хоризонтална и контролата да има хоризонтална и вертикална скролираща лентавертикална скролираща лента

Класът Класът ContainerControlContainerControl осигурява функционалност за осигурява функционалност за

управление на фокусауправление на фокуса ActiveControlActiveControl – съдържа контролата, – съдържа контролата,

която е на фокускоято е на фокус

Page 27: PowerPoint презентация (1,34 MB)

Форми, прозорци и диалозиФорми, прозорци и диалози Класът Класът System.Windows.Forms.FormSystem.Windows.Forms.Form

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

В него могат да се добавят контролиВ него могат да се добавят контроли Основни свойства на класа Основни свойства на класа FormForm::

FormBorderStyleFormBorderStyle – указва типа на – указва типа на рамката на форматарамката на формата SizableSizable – стандартна разширяема рамка – стандартна разширяема рамка FixedDialogFixedDialog – диалог с фиксирани размери – диалог с фиксирани размери NoneNone – без рамка – без рамка FixedToolWindowFixedToolWindow – кутия с инструменти с – кутия с инструменти с

фиксиран размерфиксиран размер

Page 28: PowerPoint презентация (1,34 MB)

Форми, прозорци и диалозиФорми, прозорци и диалози Основни свойства на класа Основни свойства на класа FormForm::

ControlsControls – списък с контролите – списък с контролите разположени във форматаразположени във формата

TextText – заглавие на прозореца – заглавие на прозореца SizeSize – размери на прозореца – размери на прозореца ClientSizeClientSize – размер на вътрешността на – размер на вътрешността на

формата (без рамката й)формата (без рамката й) AcceptButtonAcceptButton – бутон по подразбиране – бутон по подразбиране ActiveControlActiveControl – контролата, която държи – контролата, която държи

фокусафокуса ControlBoxControlBox – задава дали формата да има – задава дали формата да има

контроли за затваряне, минимизация и т. н.контроли за затваряне, минимизация и т. н.

Page 29: PowerPoint презентация (1,34 MB)

Форми, прозорци и диалозиФорми, прозорци и диалози Основни свойства на класа Основни свойства на класа FormForm::

IconIcon – задава икона на прозореца – задава икона на прозореца KeyPreviewKeyPreview – ако се зададе true, позволява – ако се зададе true, позволява

формата да обработва събитията от формата да обработва събитията от клавиатурата преди да ги предаде на клавиатурата преди да ги предаде на фокусираната контролафокусираната контрола

MinimumSizeMinimumSize, , MaximumSizeMaximumSize – задава – задава ограничения за размера на форматаограничения за размера на формата

ModalModal – задава дали формата е модална – задава дали формата е модална OpacityOpacity – задава прозрачност (0.00 – 1.00) – задава прозрачност (0.00 – 1.00) MdiChildrenMdiChildren, , MdiParentMdiParent – извлича/задава – извлича/задава

подчинените форми/собственика на подчинените форми/собственика на текущата форма в MDI режимтекущата форма в MDI режим

Page 30: PowerPoint презентация (1,34 MB)

Форми, прозорци и диалозиФорми, прозорци и диалози Основни свойства на класа Основни свойства на класа FormForm::

TopMostTopMost – задава дали формата стои над – задава дали формата стои над всички други прозорци (always on top)всички други прозорци (always on top)

WindowStateWindowState – извлича състоянието на – извлича състоянието на формата (нормална, минимизирана или формата (нормална, минимизирана или максимизирана)максимизирана)

Основни методи на класа Основни методи на класа FormForm:: Close()Close() – затваря формата (скрива я и – затваря формата (скрива я и

освобождава използваните ресурси)освобождава използваните ресурси) Show()Show() – показва формата и я активира – показва формата и я активира ShowDialog()ShowDialog() – показва формата в – показва формата в

модален режим и връща като резултат модален режим и връща като резултат DialogResultDialogResult свойството свойството

Page 31: PowerPoint презентация (1,34 MB)

Форми, прозорци и диалозиФорми, прозорци и диалози Основни методи на класа Основни методи на класа FormForm::

LayoutMdi(LayoutMdi(……)) – пренарежда дъщерните – пренарежда дъщерните (MDI) форми (каскадно, хоризонтално, (MDI) форми (каскадно, хоризонтално, вертикално)вертикално)

Основни събития на класа Основни събития на класа FormForm:: ActivatedActivated / / DeactivateDeactivate – извиква при – извиква при

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

ClosingClosing – извиква се при затваряне на – извиква се при затваряне на формата. Реализацията може да формата. Реализацията може да предизвиква отказване на затварянетопредизвиква отказване на затварянето

LoadLoad – извиква се еднократно при първото – извиква се еднократно при първото показване на формата. Често се ползва за показване на формата. Често се ползва за инициализиране на състояниетоинициализиране на състоянието

Page 32: PowerPoint презентация (1,34 MB)

Основни контролиОсновни контроли TextBoxTextBox – – поле за въвеждане на – – поле за въвеждане на

текст. По-важни свойства:текст. По-важни свойства: MultilineMultiline – задава дали да се допуска – задава дали да се допуска

въвеждане на няколко редавъвеждане на няколко реда TextText ( (LinesLines) – ) – съдържа въведения текстсъдържа въведения текст

LabelLabel – – – изобразява текст във – изобразява текст във формата. Важни свойства:формата. Важни свойства: TextText – – текстът, който се изобразява текстът, който се изобразява

ButtonButton – – – – бутон за натискане бутон за натискане По-важни свойства и събития:По-важни свойства и събития: ClickClick – – активира се при натисканеактивира се при натискане TextText – – задава текста върху бутоназадава текста върху бутона

Page 33: PowerPoint презентация (1,34 MB)

Поставяне на контролиПоставяне на контроли Поставянето на контроли във формата Поставянето на контроли във формата

става чрез става чрез Controls.AddControls.Add::

Редът на контролите (т. нар. Редът на контролите (т. нар. z-orderz-order)) се се определя от реда на поставянето им определя от реда на поставянето им (последната контрола е най-отгоре)(последната контрола е най-отгоре)

Windows Forms Windows Forms дизайнерът на дизайнерът на Visual Visual Studio .NET Studio .NET се грижи за правилното се грижи за правилното поставяне на контролитепоставяне на контролите

Form Form formform = new Form(); = new Form();

Button button = new Button();Button button = new Button();button.Text = "Close";button.Text = "Close";

form.form.Controls.Add(button);Controls.Add(button);

Page 34: PowerPoint презентация (1,34 MB)

Управление на събитиятаУправление на събитията Прихващането на събития става така:Прихващането на събития става така:

Windows Forms Windows Forms дизайнерът на дизайнерът на Visual Visual Studio .NET Studio .NET генерира автоматично генерира автоматично обработчиците на събитияобработчиците на събития

Form Form formform = new Form(); = new Form();Button button = new Button();Button button = new Button();button.button.Click += new EventHandler(Click += new EventHandler( this.this.button_Click);button_Click);......

private void button_Click(private void button_Click( object sender, EventArgs e)object sender, EventArgs e){{ // Handle the "click" event// Handle the "click" event}}

Page 35: PowerPoint презентация (1,34 MB)

Управление на събитиятаУправление на събитията Типове събития в Типове събития в Windows FormsWindows Forms::

EventHandlerEventHandler – проста нотификация – проста нотификация без допълнителни даннибез допълнителни данни

KeyEventHandlerKeyEventHandler – събития от – събития от клавиатуратаклавиатурата подава се кой е натиснатият клавиш и подава се кой е натиснатият клавиш и

състоянието на състоянието на [Ctrl], [Shift][Ctrl], [Shift] и и [Alt] [Alt] MouseEventHandlerMouseEventHandler – събития от – събития от

мишкатамишката подава се позицията на мишката и подава се позицията на мишката и

състоянието на бутоните йсъстоянието на бутоните й CancelCancelEventHandlerEventHandler – събития – събития,, които които

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

Page 36: PowerPoint презентация (1,34 MB)

Прост калкулатор – примерПрост калкулатор – примерusing System;using System;using System.Drawing;using System.Drawing;using System.Windows.Forms;using System.Windows.Forms;

public class CalculatorForm : Formpublic class CalculatorForm : Form{{ private TextBox TextBoxNumber1;private TextBox TextBoxNumber1; private TextBox TextBoxNumber2;private TextBox TextBoxNumber2; private TextBox TextBoxSum;private TextBox TextBoxSum; private Button ButtonCalc;private Button ButtonCalc; private Label LabelPlus;private Label LabelPlus; private Label LabelEquals;private Label LabelEquals;

public CalculatorForm()public CalculatorForm() {{ TextBoxNumber1 = new TextBox();TextBoxNumber1 = new TextBox(); TextBoxNumber1.Bounds = new Rectangle(TextBoxNumber1.Bounds = new Rectangle( new Point(16, 16), new Size(72, 20));new Point(16, 16), new Size(72, 20)); TextBoxNumber1.MaxLength = 10;TextBoxNumber1.MaxLength = 10;

((примерът продължавапримерът продължава))

Page 37: PowerPoint презентация (1,34 MB)

Прост калкулатор – примерПрост калкулатор – пример LabelPlus = new Label();LabelPlus = new Label(); LabelPlus.AutoSize = true;LabelPlus.AutoSize = true; LabelPlus.Location = new Point(94, 19);LabelPlus.Location = new Point(94, 19); LabelPlus.Text = "+";LabelPlus.Text = "+";

TextBoxNumber2 = new TextBox();TextBoxNumber2 = new TextBox(); TextBoxNumber2.Bounds = new Rectangle(TextBoxNumber2.Bounds = new Rectangle( new Point(112, 16), new Size(72, 20));new Point(112, 16), new Size(72, 20)); TextBoxNumber2.MaxLength = 10;TextBoxNumber2.MaxLength = 10;

LabelEquals = new Label();LabelEquals = new Label(); LabelEquals.AutoSize = true;LabelEquals.AutoSize = true; LabelEquals.Location = new Point(191, 18);LabelEquals.Location = new Point(191, 18); LabelEquals.Text = "=";LabelEquals.Text = "=";

TextBoxSum = new TextBox();TextBoxSum = new TextBox(); TextBoxSum.Bounds = new Rectangle(TextBoxSum.Bounds = new Rectangle( new Point(208, 16), new Size(72, 20));new Point(208, 16), new Size(72, 20)); TextBoxSum.ReadOnly = true;TextBoxSum.ReadOnly = true;

(примерът продължава)(примерът продължава)

Page 38: PowerPoint презентация (1,34 MB)

Прост калкулатор – примерПрост калкулатор – пример ButtonCalc = new Button();ButtonCalc = new Button(); ButtonCalc.Bounds = new Rectangle(ButtonCalc.Bounds = new Rectangle( new Point(16, 48), new Size(264, 23));new Point(16, 48), new Size(264, 23)); ButtonCalc.Text = "Calculate sum";ButtonCalc.Text = "Calculate sum"; ButtonCalc.Click += new EventHandler(ButtonCalc.Click += new EventHandler( this.ButtonCalc_Click);this.ButtonCalc_Click);

this.AcceptButton = ButtonCalc;this.AcceptButton = ButtonCalc; this.ClientSize = new Size(298, 87);this.ClientSize = new Size(298, 87); this.Controls.Add(TextBoxNumber1);this.Controls.Add(TextBoxNumber1); this.Controls.Add(LabelPlus);this.Controls.Add(LabelPlus); this.Controls.Add(TextBoxNumber2);this.Controls.Add(TextBoxNumber2); this.Controls.Add(LabelEquals);this.Controls.Add(LabelEquals); this.Controls.Add(TextBoxSum);this.Controls.Add(TextBoxSum); this.Controls.Add(ButtonCalc);this.Controls.Add(ButtonCalc); this.FormBorderStyle =this.FormBorderStyle = FormBorderStyle.FixedDialog;FormBorderStyle.FixedDialog; this.MaximizeBox = false;this.MaximizeBox = false; this.MinimizeBox = false;this.MinimizeBox = false; this.Text = "Calculator";this.Text = "Calculator"; }} (примерът продължава)(примерът продължава)

Page 39: PowerPoint презентация (1,34 MB)

Прост калкулатор – примерПрост калкулатор – пример private void ButtonCalc_Click(private void ButtonCalc_Click( object aSender, EventArgs aArgs)object aSender, EventArgs aArgs) {{ trytry {{ int value1 =int value1 = Int32.Parse(TextBoxNumber1.Text);Int32.Parse(TextBoxNumber1.Text); int value2 =int value2 = Int32.Parse(TextBoxNumber2.Text);Int32.Parse(TextBoxNumber2.Text); int sum = value1 + value2;int sum = value1 + value2; TextBoxSum.Text = sum.ToString();TextBoxSum.Text = sum.ToString(); }} catch (catch (FormatFormatException)Exception) {{ TextBoxSum.Text = "Invalid!";TextBoxSum.Text = "Invalid!"; }}

TextBoxNumber1.SelectAll();TextBoxNumber1.SelectAll(); TextBoxNumber2.SelectAll();TextBoxNumber2.SelectAll();

(примерът продължава)(примерът продължава)

Page 40: PowerPoint презентация (1,34 MB)

Прост калкулатор – примерПрост калкулатор – пример TextBoxNumber1.Focus();TextBoxNumber1.Focus(); }}

static void Main()static void Main() {{ CalculatorForm CalculatorForm CCalcForm = new CalculatorForm();alcForm = new CalculatorForm(); Application.Run(Application.Run(CCalcForm);alcForm); }}}}

Page 41: PowerPoint презентация (1,34 MB)

Демонстрация #2Демонстрация #2 Прост калкулаторПрост калкулатор

Page 42: PowerPoint презентация (1,34 MB)

Windows Forms Windows Forms и и VS.NETVS.NET Windows Forms Windows Forms редакторът на редакторът на

VS.NET VS.NET позволява:позволява: създаване на формисъздаване на форми добавяне на контролидобавяне на контроли добавяне на неграфични компонентидобавяне на неграфични компоненти настройка на свойстватанастройка на свойствата добавяне на събитиядобавяне на събития

Създаване на форма:Създаване на форма:

Page 43: PowerPoint презентация (1,34 MB)

Windows Forms Windows Forms и и VS.NETVS.NET Добавяне на контрола:Добавяне на контрола:

Добавяне на неграфични компоненти:Добавяне на неграфични компоненти:

Page 44: PowerPoint презентация (1,34 MB)

Windows Forms Windows Forms и и VS.NETVS.NET Настройка на Настройка на

свойствата:свойствата: Добавяне на Добавяне на

обработчици обработчици на събития:на събития:

Page 45: PowerPoint презентация (1,34 MB)

Демонстрация #3Демонстрация #3 Създаване на прост калкулатор с Създаване на прост калкулатор с

Windows Forms Windows Forms редактора на редактора на VS.NETVS.NET

Page 46: PowerPoint презентация (1,34 MB)

Стандартни диалогови кутииСтандартни диалогови кутии Класът Класът MessageBoxMessageBox позволява извеждане позволява извеждане

на стандартни диалогови кутии:на стандартни диалогови кутии: съобщения към потребителясъобщения към потребителя въпросителни диалозивъпросителни диалози

Примери:Примери:MessageBox.Show("Няма връзка с MessageBox.Show("Няма връзка с Интернет.", "Предупреждение");Интернет.", "Предупреждение");

bool confirmed =bool confirmed = MessageBox.Show("Наистина ли MessageBox.Show("Наистина ли " " ++ ""ще изтриете това?",ще изтриете това?", "Въпрос","Въпрос", MessageBoxButtons.YesNo,MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==MessageBoxIcon.Question) == DialogResult.Yes;DialogResult.Yes;

Page 47: PowerPoint презентация (1,34 MB)

Извикване на диалогови кутииИзвикване на диалогови кутии Потребителските диалогови кутии се Потребителските диалогови кутии се

извикват така:извикват така:

ShowDialog()ShowDialog() показва модално диалога показва модално диалога Типът Типът DialogResultDialogResult съдържа съдържа

резултата (резултата (OKOK, , YesYes, , NoNo, , CancelCancel и др.) и др.) Задаване на Задаване на DialogResultDialogResult::

Автоматично – чрез свойството Автоматично – чрез свойството DialogResultDialogResult на бутоните на бутоните

Ръчно – преди затваряне на диалога Ръчно – преди затваряне на диалога чрез свойството му чрез свойството му DialogResultDialogResult

DialogResult result = dialog.ShowDialog();DialogResult result = dialog.ShowDialog();

Page 48: PowerPoint презентация (1,34 MB)

Диалогови кутии – примерДиалогови кутии – примерprivate void private void BButtonCallDialog_Click(uttonCallDialog_Click( object sender, System.EventArgs e)object sender, System.EventArgs e){{ DialogForm dialog = new DialogForm();DialogForm dialog = new DialogForm(); if (dialog.ShowDialog() == DialogResult.OK)if (dialog.ShowDialog() == DialogResult.OK) {{ string userName = dialog.UserName;string userName = dialog.UserName; MessageBox.Show("You entered: " + userName);MessageBox.Show("You entered: " + userName); }} elseelse {{ MessageBox.Show("You canceled the dialog.");MessageBox.Show("You canceled the dialog."); }}}}

В В MainFormMainForm класа: класа:

public string UserNamepublic string UserName {{ getget {{ return return TTextBoxName.Text;extBoxName.Text; }}}}

В В DialogFormDialogForm класа: класа:

Page 49: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #44 DialogResultDialogResult и предаване на данни и предаване на данни

между диалозимежду диалози

Page 50: PowerPoint презентация (1,34 MB)

Други Други Windows Forms Windows Forms контроликонтроли CheckBoxCheckBox – – кутия за избор в – – кутия за избор в

стил "да/не". По-важни свойства:стил "да/не". По-важни свойства: CheckedChecked – задава дали е избрана – задава дали е избрана

RadioButtonRadioButton – – контрола за – – контрола за алтернативен изборалтернативен избор CheckedChecked – задава дали е избрана – задава дали е избрана CheckedChangedCheckedChanged – активира се при – активира се при

промяна на промяна на CheckedChecked свойството свойството Използва се в групи:Използва се в групи:

Само един Само един RadioButtonRadioButton е е избран в даден моментизбран в даден момент

Поставят се в Поставят се в GroupBoxGroupBox, , PanelPanel или или TabPageTabPage

Page 51: PowerPoint презентация (1,34 MB)

Други Други Windows Forms Windows Forms контроликонтроли PictureBoxPictureBox – изобразява – изобразява

картинки. По-важни свойства:картинки. По-важни свойства: ImageImage – задава картинката – задава картинката SizeModeSizeMode – задава дали – задава дали

картинката да се разшири / картинката да се разшири / намали или центриранамали или центрира

PanelPanel – представлява – представлява контейнер, който съдържа контейнер, който съдържа група други контролигрупа други контроли

TabControlTabControl, , TabPageTabPage – – осигуряват ползване на осигуряват ползване на табове със страницитабове със страници

Page 52: PowerPoint презентация (1,34 MB)

Други Други Windows Forms Windows Forms контроликонтроли ListBoxListBox – изобразява списък с – изобразява списък с

низове. По-важни свойства:низове. По-важни свойства: ItemsItems – задава списъка – задава списъка SelectionModeSelectionMode – разрешава / – разрешава /

забранява селектиране на няколко забранява селектиране на няколко елемента едновременноелемента едновременно

SelectedIndexSelectedIndex, , SelectedIndicesSelectedIndices, , SelectedItemsSelectedItems – връща избрания – връща избрания елемент (или избраните елементи)елемент (или избраните елементи)

CheckedListBoxCheckedListBox – списък от – списък от възможности за избор "да/не":възможности за избор "да/не": ItemsItems – задава възможностите – задава възможностите CheckedItemsCheckedItems – връща избраните – връща избраните

Page 53: PowerPoint презентация (1,34 MB)

Демонстрация #5Демонстрация #5 Работа с някои контролиРабота с някои контроли

Page 54: PowerPoint презентация (1,34 MB)

Други Други Windows Forms Windows Forms контроликонтроли ComboBoxComboBox – кутия за редакция на текст с – кутия за редакция на текст с

възможност за drop-down алтернативен възможност за drop-down алтернативен избор. По-важни свойства:избор. По-важни свойства: TextText – въведения текст – въведения текст ItemsItems – възможни стойности – възможни стойности DropDownStyleDropDownStyle – задава стил – дали само – задава стил – дали само

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

TreeViewTreeView – изобразява дървовидни – изобразява дървовидни данни. Основни свойства:данни. Основни свойства: NodesNodes – съдържа дървото – съдържа дървото (списък от (списък от

TreeNodeTreeNode обекти) обекти) SelectedNodeSelectedNode – избрания възел – избрания възел

Page 55: PowerPoint презентация (1,34 MB)

Други Други Windows Forms Windows Forms контроликонтроли LinkLabelLinkLabel – – препратка – – препратка

(hyperlink):(hyperlink): TextText – съдържание на връзката – съдържание на връзката LinkClickedLinkClicked – активира се при щракване – активира се при щракване

върху препраткатавърху препратката RichTextBoxRichTextBox – кутия за редакция на – кутия за редакция на

текст с форматиране (Rich Text Format)текст с форматиране (Rich Text Format) LoadFileLoadFile, , SaveFileSaveFile – зарежда/записва RTF – зарежда/записва RTF SelectionFontSelectionFont,,

SelectionColorSelectionColor, , SelectionAlignmentSelectionAlignment – задават – задават шрифт, цвят и подравняване на шрифт, цвят и подравняване на избрания текстизбрания текст

Page 56: PowerPoint презентация (1,34 MB)

МенютаМенюта MainMenuMainMenu – – падащо – – падащо

менюменю Съдържа списък от Съдържа списък от MenuItemMenuItem елементи елементи

MenuItemMenuItem – елемент от меню – елемент от меню TextText – заглавие на елемента, например – заглавие на елемента, например

““&New&New” или “” или “Op&en…Op&en…”” илиили “ “––”” ShortCutShortCut – кратък клавиш – кратък клавиш ClickClick – събитие “избиране” – събитие “избиране”

ContextMenuContextMenu – контекстно меню – контекстно меню (popup меню)(popup меню) Съдържа списък от Съдържа списък от MenuItemMenuItem елементи елементи

Page 57: PowerPoint презентация (1,34 MB)

Ленти с инструментиЛенти с инструменти ToolBarToolBar – лента с инструменти (с – лента с инструменти (с

бутони) –бутони) – ButtonsButtons – съдържа списък от – съдържа списък от

ToolBarButtonToolBarButton елементи елементи ImageListImageList – задава картинките за – задава картинките за

бутонитебутоните ButtonClickButtonClick – активира се при – активира се при

натискане на бутоннатискане на бутон подава се подава се ToolBarButtonClickEventArgsToolBarButtonClickEventArgs с с

информация кой бутон е бил натиснатинформация кой бутон е бил натиснат ToolBarButtonToolBarButton – бутон в лентата – бутон в лентата ImageListImageList – списък с картинки – списък с картинки

Page 58: PowerPoint презентация (1,34 MB)

Статус лентиСтатус ленти StatusBarStatusBar – – лента – – лента

за състояниетоза състоянието PanelsPanels – съдържа секциите на лентата – съдържа секциите на лентата ShowPanelsShowPanels – включва / изключва – включва / изключва

показване на панелитепоказване на панелите StatusBarPanelStatusBarPanel – секция в лентата – секция в лентата

TextText – – съдържание на панеласъдържание на панела IconIcon – – икона на панелаикона на панела

Page 59: PowerPoint презентация (1,34 MB)

Диалог за избор на файлДиалог за избор на файл OpenFileDialogOpenFileDialog – диалог за избор на – диалог за избор на

файл (при отваряне)файл (при отваряне) TitleTitle – заглавие на диалога – заглавие на диалога InitialDirectoryInitialDirectory – начална – начална

директориядиректория FilterFilter – задава възможните файлови – задава възможните файлови

разширенияразширения FilterIndexFilterIndex – задава активния филтър – задава активния филтър MultiselectMultiselect – избор на много файлове – избор на много файлове FileNameFileName, , FileNamesFileNames – избрания файл – избрания файл

SaveSaveFileDialogFileDialog – диалог за избор на – диалог за избор на файл (при записване)файл (при записване)

Page 60: PowerPoint презентация (1,34 MB)

Файлов диалог – примерФайлов диалог – примерprivate void private void BButtonLoadFile_Click(uttonLoadFile_Click( object sender, System.EventArgs e)object sender, System.EventArgs e){{ OpenFileDialog openFileDialog = new OpenFileDialog openFileDialog = new OpenFileDialog();OpenFileDialog(); openFileDialog.Filter = "Text files (*.txt)|*.txtopenFileDialog.Filter = "Text files (*.txt)|*.txt||"" + + "Log files (*.log)|*.log";"Log files (*.log)|*.log"; openFileDialog.Title = "Choose text file";openFileDialog.Title = "Choose text file";

if (openFileDialog.ShowDialog() == DialogResult.OK)if (openFileDialog.ShowDialog() == DialogResult.OK) {{ string fileName = openFileDialog.FileName;string fileName = openFileDialog.FileName; using (StreamReader reader =using (StreamReader reader = File.OpenText(fileName))File.OpenText(fileName)) {{ string fileContents = reader.ReadToEnd();string fileContents = reader.ReadToEnd(); textBox.Text = fileContents;textBox.Text = fileContents; }} }}}}

Page 61: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #66 Работа с файлов диалогРабота с файлов диалог

Page 62: PowerPoint презентация (1,34 MB)

MDI MDI приложенияприложения MDI (Multiple Document Interface) MDI (Multiple Document Interface)

приложенията поддържат работа с приложенията поддържат работа с няколко документа едновременноняколко документа едновременно

MDI контейнери (MDI parents)MDI контейнери (MDI parents) Съдържат други формиСъдържат други форми Задава им се Задава им се IsMdiContainerIsMdiContainer = = truetrue Обикновено имат меню Window за смяна Обикновено имат меню Window за смяна

на активната форма (на активната форма (MdiListMdiList = = truetrue)) MDI формите (MDI children)MDI формите (MDI children)

Съдържат се в контейнер-форматаСъдържат се в контейнер-формата Задава им се Задава им се MdiParentMdiParent = = <контейнер><контейнер>

Page 63: PowerPoint презентация (1,34 MB)

Демонстрация #7Демонстрация #7 Мултидокументов текстов редакторМултидокументов текстов редактор

Page 64: PowerPoint презентация (1,34 MB)

Валидация на данниВалидация на данни Валидацията е необходима, когато в Валидацията е необходима, когато в

дадена контрола трябва да се допуска дадена контрола трябва да се допуска въвеждане само на коректни даннивъвеждане само на коректни данни

В Windows Forms има стандартни В Windows Forms има стандартни средства за валидация:средства за валидация: ValidatingValidating – събитие за валидация на – събитие за валидация на

данните в класа данните в класа ControlControl Подава се параметър от тип Подава се параметър от тип

CancelEventArgsCancelEventArgs Ако се зададе Ако се зададе CancelCancel==truetrue – – не пуска не пуска

потребителя да напусне контролатапотребителя да напусне контролата ErrorProviderErrorProvider – отбелязва графично – отбелязва графично

контроли с невалидни данниконтроли с невалидни данни

Page 65: PowerPoint презентация (1,34 MB)

Валидация на данни – примерВалидация на данни – примерprivate TextBox private TextBox TTextBox1;extBox1;private ErrorProvider errorProvider;private ErrorProvider errorProvider;

......

private void private void TTextBox1_Validating(object sender,extBox1_Validating(object sender, System.ComponentModel.CancelEventArgs e)System.ComponentModel.CancelEventArgs e){{ try try {{ Int32.Parse(Int32.Parse(TTextBox1.Text);extBox1.Text); errorProvider.SetError(errorProvider.SetError(TTextBox1, "");extBox1, ""); }} catch (catch (FormatFormatException)Exception) {{ errorProvider.SetError(errorProvider.SetError( TTextBox1, "Integer number expected!");extBox1, "Integer number expected!"); e.Cancel = true;e.Cancel = true; }}}}

Page 66: PowerPoint презентация (1,34 MB)

Демонстрация #8Демонстрация #8 Валидация на данниВалидация на данни

Page 67: PowerPoint презентация (1,34 MB)

Свързване на данниСвързване на данни Свързването на данните (Data Binding)Свързването на данните (Data Binding)

Осигурява автоматично прехвърляне на данни Осигурява автоматично прехвърляне на данни между контроли и източници на даннимежду контроли и източници на данни

Например: свързване на масив съдържащ Например: свързване на масив съдържащ имена на градове с имена на градове с ComboBoxComboBox контрола контрола

Източници на данниИзточници на данни IListIList – масиви и колекции – масиви и колекции IBindingListIBindingList – поддържа се от – поддържа се от DataViewDataView

поддържа нотификация за промянаподдържа нотификация за промяна Контроли, поддържащи data bindingКонтроли, поддържащи data binding

Всички Windows Forms контролиВсички Windows Forms контроли TextBoxTextBox, , ComboBoxComboBox, , ListBoxListBox, , DataGridDataGrid

Page 68: PowerPoint презентация (1,34 MB)

Свързване на данниСвързване на данни Видове свързванеВидове свързване

Просто свързване (Просто свързване (simple bindingsimple binding)) Свързване на контрола с единичен обектСвързване на контрола с единичен обект Свързване на контрола с единичен Свързване на контрола с единичен

(текущ) елемент от списък(текущ) елемент от списък Например: Например: TextBoxTextBox и и CheckBoxCheckBox

Сложно свързванеСложно свързване (complex binding) (complex binding) Свързване на списъчна контрола със Свързване на списъчна контрола със

списъксписък Например: Например: ListBoxListBox, , ComboBoxComboBox, , DataGridDataGrid Поддържа се текущо избран елемент Поддържа се текущо избран елемент

(активен) от списъка(активен) от списъка

Page 69: PowerPoint презентация (1,34 MB)

Свързването е еднопосочно!Свързването е еднопосочно! Промяна на дадено свързано свойство от Промяна на дадено свързано свойство от

дадена контрола променя данните в дадена контрола променя данните в източника, към който то е свързаноизточника, към който то е свързано

Обратното не е вярно!Обратното не е вярно! При промяна на източника на данни При промяна на източника на данни

свързаните към него контроли не си свързаните към него контроли не си променят свойстватапроменят свойствата

След промяна на данните в източника на След промяна на данните в източника на данни за отразяване на промените в данни за отразяване на промените в свързаните с него контроли се прави:свързаните с него контроли се прави:1.1. Премахване (изтриване) на свързванетоПремахване (изтриване) на свързването2.2. Добавяне на свързването отновоДобавяне на свързването отново

Page 70: PowerPoint презентация (1,34 MB)

Просто свързванеПросто свързване Свързване на контрола към обектСвързване на контрола към обект При промяна на При промяна на TextBox1.TextTextBox1.Text се се

променя свързаният обектпроменя свързаният обектclass Customerclass Customer{{ private string mName;private string mName; public string Namepublic string Name {{ get { return mName; }get { return mName; } set { mName = value; }set { mName = value; } }}}}

Customer cust = new Customer();Customer cust = new Customer();cust.Name = "Бай Иван"cust.Name = "Бай Иван";;

TTextBox1.DataBindings.Add(extBox1.DataBindings.Add( new Binding("Text", cust, "Name"));new Binding("Text", cust, "Name"));

Page 71: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #99 Свързване на контрола към обектСвързване на контрола към обект

Page 72: PowerPoint презентация (1,34 MB)

Просто свързванеПросто свързване Свързване на контрола към списъкСвързване на контрола към списък

Свързване на контрола към таблицаСвързване на контрола към таблица

string[] towns = {"София", "Пловдив", "Варна"};string[] towns = {"София", "Пловдив", "Варна"};TTextBoxTowns.DataBindings.Add(extBoxTowns.DataBindings.Add( new Binding("Text", towns, ""));new Binding("Text", towns, ""));

// Имаме DataSet ds с таблица Towns с колони id и name:// Имаме DataSet ds с таблица Towns с колони id и name:

DataTable towns = new DataTable("Towns");DataTable towns = new DataTable("Towns");towns.Columns.Add(new DataColumn("id", typeof(int)));towns.Columns.Add(new DataColumn("id", typeof(int)));towns.Columns.Add(new DataColumn("name", towns.Columns.Add(new DataColumn("name", typeof(string)));typeof(string)));DataSet ds = new DataSet();DataSet ds = new DataSet();ds.Tables.Add(towns);ds.Tables.Add(towns);

TTextBoxTowns.DataBindings.Add(extBoxTowns.DataBindings.Add( new Binding("Text", ds, "Towns.name"));new Binding("Text", ds, "Towns.name"));

Page 73: PowerPoint презентация (1,34 MB)

Просто свързване с Просто свързване с VS.NETVS.NET Свързването може да става и по Свързването може да става и по

време на дизайн с VS.NET (ако време на дизайн с VS.NET (ако използваме за източник DataSet)използваме за източник DataSet)

Page 74: PowerPoint презентация (1,34 MB)

BindingContextBindingContext Формата пази информация за свързаните Формата пази информация за свързаните

контроли в своя контроли в своя BindingContextBindingContext обект обект CurrencyManagerCurrencyManager – за контроли свързани към – за контроли свързани към

списък. Съдържа позицията в списъкасписък. Съдържа позицията в списъка PropertyManagerPropertyManager – за контроли свързани към – за контроли свързани към

обектобект

BindingContext

CurrencyManager

CurrencyManager

CurrencyManager

Array

DataTable

Collection

PropertyManager Object

Form

Page 75: PowerPoint презентация (1,34 MB)

Навигация с Навигация с CurrencyManagerCurrencyManager CurrencyManagerCurrencyManager класът пази текущата класът пази текущата

позиция в списъка – източник на даннипозиция в списъка – източник на данни PositionPosition – съдържа позицията – съдържа позицията CountCount – съдържа размера на списъка – съдържа размера на списъка

Навигация по източника на данниНавигация по източника на данни Извличане на Извличане на CurrencyManagerCurrencyManager обекта: обекта:

Навигация по списъка:Навигация по списъка:

CurrencyManager cm = (CurrencyManager)CurrencyManager cm = (CurrencyManager) textBox1.DataBindings["Text"].BindingManagerBase;textBox1.DataBindings["Text"].BindingManagerBase;//// Може и така:Може и така:

CurrencyManager cm = (CurrencyManager)CurrencyManager cm = (CurrencyManager) form1.BindingContext[dataTableCustomers];form1.BindingContext[dataTableCustomers];

cm.Position++;cm.Position++;

Page 76: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #1010 Свързване на контрола към списък и Свързване на контрола към списък и

навигация по списъканавигация по списъка

Page 77: PowerPoint презентация (1,34 MB)

Сложно свързванеСложно свързване Свързване на контрола към списъкСвързване на контрола към списък

Използва се при списъчни контроли:Използва се при списъчни контроли: ListBoxListBox, , ComboBoxComboBox и др.и др.

Задават се свойствата:Задават се свойствата: DataSourceDataSource – списък с данните – списък с данните DisplayMemberDisplayMember – път до полето, което да се – път до полето, което да се

визуализиравизуализира ValueMemberValueMember – път до полето, от което се – път до полето, от което се

получава резултатаполучава резултата Пример:Пример:comboBox1.DataSource = dataSetCountries; comboBox1.DataSource = dataSetCountries; comboBox1.DisplayMember = "Countries.CountryCode";comboBox1.DisplayMember = "Countries.CountryCode";comboBox1.ValueMember = "Countries.Name";comboBox1.ValueMember = "Countries.Name";

Page 78: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #1111 Сложно свързване на контрола към Сложно свързване на контрола към

списъксписък

Page 79: PowerPoint презентация (1,34 MB)

Сложно свързване с Сложно свързване с VS.NETVS.NET Свързването може да става и по Свързването може да става и по

време на дизайн с време на дизайн с VS.NET (VS.NET (ако ако ползваме за източник ползваме за източник DataSetDataSet))

Page 80: PowerPoint презентация (1,34 MB)

Контролата Контролата DataGridDataGrid DataGridDataGrid контролата визуализира контролата визуализира

таблични даннитаблични данни Осигурява навигация по редове и колониОсигурява навигация по редове и колони Позволява редактиране на даннитеПозволява редактиране на данните Слаба функционалностСлаба функционалност

Ще бъде заменена в бъдещи версии на .NET Ще бъде заменена в бъдещи версии на .NET FrameworkFramework

Използва се най-често с ADO.NET Използва се най-често с ADO.NET DataSetDataSet и и DataTableDataTable

DataSourceDataSource – задава източника на данни – задава източника на данни DataMemberDataMember – задава пътя до данните в – задава пътя до данните в

рамките на източникарамките на източника

Page 81: PowerPoint презентация (1,34 MB)

DataGridDataGrid – пример – примерprivate void MainForm_Load(private void MainForm_Load( object sender, System.EventArgs e)object sender, System.EventArgs e){{ // Create table "Towns"// Create table "Towns" DataTable towns = new DataTable("Towns");DataTable towns = new DataTable("Towns"); towns.Columns.Add(towns.Columns.Add( new DataColumn("id", typeof(int)));new DataColumn("id", typeof(int))); towns.Columns.Add(towns.Columns.Add( new DataColumn("name", typeof(string)));new DataColumn("name", typeof(string)));

// Add some rows in the table// Add some rows in the table DataRow row = towns.NewRow();DataRow row = towns.NewRow(); row["id"] = 1;row["id"] = 1; row["name"] = "София";row["name"] = "София"; towns.Rows.Add(row);towns.Rows.Add(row);

row = towns.NewRow();row = towns.NewRow(); row["id"] = 2;row["id"] = 2; row["name"] = "Пловдив";row["name"] = "Пловдив"; towns.Rows.Add(row);towns.Rows.Add(row);

Page 82: PowerPoint презентация (1,34 MB)

DataGridDataGrid – пример – пример row = towns.NewRow();row = towns.NewRow(); row["id"] = 3;row["id"] = 3; row["name"] = "Варна";row["name"] = "Варна"; towns.Rows.Add(row);towns.Rows.Add(row);

row = towns.NewRow();row = towns.NewRow(); row["id"] = 4;row["id"] = 4; row["name"] = "Русе";row["name"] = "Русе"; towns.Rows.Add(row);towns.Rows.Add(row);

// Add table "Towns" to the DataSet// Add table "Towns" to the DataSet DataSet ds = new DataSet();DataSet ds = new DataSet(); ds.Tables.Add(towns);ds.Tables.Add(towns);

// Bind the DataGrid to the DataSet// Bind the DataGrid to the DataSet DDataGridTowns.DataSource = ds;ataGridTowns.DataSource = ds; DDataGridTowns.DataMember = "Towns";ataGridTowns.DataMember = "Towns";}}

Page 83: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #1122 Работа с Работа с DataGridDataGrid контролата контролата

Page 84: PowerPoint презентация (1,34 MB)

Контролата Контролата DataGridDataGrid По-важни свойства на По-важни свойства на DataGridDataGrid

ReadOnlyReadOnly – разрешава / забранява редакция – разрешава / забранява редакция CaptionVisibleCaptionVisible – показва / скрива заглавието – показва / скрива заглавието ColumnHeadersVisibleColumnHeadersVisible – показва / скрива – показва / скрива

заглавията на колонитезаглавията на колоните RowHeadersVisibleRowHeadersVisible – показва / скрива – показва / скрива

колоната вляво от редоветеколоната вляво от редовете TableStylesTableStyles – задава стилове за таблицата – задава стилове за таблицата

Активен е само първият стилАктивен е само първият стил MappingNameMappingName – задава таблицата, за която се – задава таблицата, за която се

отнася дефинираният стилотнася дефинираният стил GridColumGridColumnnStylesStyles – задава форматирането на – задава форматирането на

отделните колони – заглавие, ширина и др.отделните колони – заглавие, ширина и др.

Page 85: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #1133 TableStylesTableStyles – дефиниране на – дефиниране на

стилове за стилове за DataGridDataGrid контролата контролата

Page 86: PowerPoint презентация (1,34 MB)

Master-Details Master-Details навигациянавигация Master-DetailMaster-Detailss навигацията отразява навигацията отразява

взаимоотношения тип "1 към много"взаимоотношения тип "1 към много" Например: 1 регион има много областиНапример: 1 регион има много области

В ADO.NET В ADO.NET DataSetDataSet обектите се обектите се поддържат релации тип "главен/подчинен"поддържат релации тип "главен/подчинен" Използват се DataRelation обектите в DataSetИзползват се DataRelation обектите в DataSet

Windows Forms поддържа Master-DetailWindows Forms поддържа Master-Detailss навигациянавигация На главната контрола се задава за източник на На главната контрола се задава за източник на

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

източник на данните релацията на таблицатаизточник на данните релацията на таблицата Контролите се свързват с един и същ Контролите се свързват с един и същ DataSetDataSet

Page 87: PowerPoint презентация (1,34 MB)

Master-Details Master-Details – пример– пример

// // Bind the master grid to the master tableBind the master grid to the master tableDDataGridCountries.DataSource =ataGridCountries.DataSource = datasetCountriesAndTowns;datasetCountriesAndTowns;DDataGridCountries.DataMember = ataGridCountries.DataMember = "Countries";"Countries";

// // Bind the detail grid to the relationshipBind the detail grid to the relationshipDDataGridTowns.DataSource =ataGridTowns.DataSource = datasetCountriesAndTowns;datasetCountriesAndTowns;DDataGridTowns.DataMember =ataGridTowns.DataMember = "Countries.CountriesTowns";"Countries.CountriesTowns";

Page 88: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #1414 Master-DetailsMaster-Details навигация навигация

Page 89: PowerPoint презентация (1,34 MB)

Релации "много към много"Релации "много към много" Релации тип "много към много" не се Релации тип "много към много" не се

поддържат от поддържат от DataSetDataSet и и DataGridDataGrid Могат да бъдат сведени до Master-DetailМогат да бъдат сведени до Master-Details s

чрез добавяне на изглед в базата от данничрез добавяне на изглед в базата от данни

CREATE VIEW View_StudentsCourses ASCREATE VIEW View_StudentsCourses AS SELECT StudentId, StudentName, CourseId, CourseNameSELECT StudentId, StudentName, CourseId, CourseName FROM Students, Courses, StudentsCoursesFROM Students, Courses, StudentsCourses WHERE Students.StudentsId = StudentsCourses.StudentIdWHERE Students.StudentsId = StudentsCourses.StudentId AND Courses.CourseId = StudentsCourses.CourseIdAND Courses.CourseId = StudentsCourses.CourseId

Page 90: PowerPoint презентация (1,34 MB)

Релации "много към много"Релации "много към много"

Page 91: PowerPoint презентация (1,34 MB)

Наследяване на формиНаследяване на форми Наследяването на формиНаследяването на форми

Позволява повторно използване на Позволява повторно използване на части от потребителския интерфейсчасти от потребителския интерфейс

Възможно е да се променят наведнъж Възможно е да се променят наведнъж общите части на много формиобщите части на много форми

Чрез подмяна на единичен Чрез подмяна на единичен DLLDLL файл файл може да се променят всички формиможе да се променят всички форми

Формите-наследници могат да добавят Формите-наследници могат да добавят функционалностфункционалност

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

Page 92: PowerPoint презентация (1,34 MB)

Наследяване на формиНаследяване на форми Базовата форма е най-обикновена формаБазовата форма е най-обикновена форма

Контролите, които могат да се променят, се Контролите, които могат да се променят, се обявят като обявят като protectedprotected

Останалите контроли не могат да се Останалите контроли не могат да се променят от формите-наследниципроменят от формите-наследници

За наследяване на форма се наследява За наследяване на форма се наследява класът на базовата формакласът на базовата форма Формите-наследници се създават се от Формите-наследници се създават се от

Visual Studio .NET (Visual Studio .NET (чрез чрез FileFile || Add New Add New Item …Item … || Inherited Form)Inherited Form)

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

Page 93: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #1155 Наследяване на формиНаследяване на форми

Page 94: PowerPoint презентация (1,34 MB)

Въведение в Въведение в System.DrawingSystem.Drawing System.DrawingSystem.Drawing осигурява достъп осигурява достъп

до GDI+ функциите на Windows:до GDI+ функциите на Windows: Повърхности за чертанеПовърхности за чертане Работа с графика и графични Работа с графика и графични

трансформациитрансформации Изчертаване на геометрични фигуриИзчертаване на геометрични фигури Работа с изображенияРабота с изображения Работа с текст и шрифтовеРабота с текст и шрифтове Печатане на принтерПечатане на принтер

Page 95: PowerPoint презентация (1,34 MB)

Пакетът Пакетът System.DrawingSystem.Drawing System.DrawingSystem.Drawing се състои от: се състои от:

System.DrawingSystem.Drawing Основни класовеОсновни класове Повърхности, моливи, четкиПовърхности, моливи, четки Основни геометрични фигуриОсновни геометрични фигури Изобразяване на текстИзобразяване на текст

System.Drawing.ImagingSystem.Drawing.Imaging Работа с изображенияРабота с изображения Картинки и икониКартинки и икони Четене и записване в различни файлови Четене и записване в различни файлови

форматиформати Оразмеряване на изображенияОразмеряване на изображения

Page 96: PowerPoint презентация (1,34 MB)

Пакетът Пакетът System.DrawingSystem.Drawing System.DrawingSystem.Drawing се състои от: се състои от:

System.Drawing.Drawing2DSystem.Drawing.Drawing2D Графични трансформацииГрафични трансформации Бленди, матрици и др.Бленди, матрици и др.

System.Drawing.TextSystem.Drawing.Text Достъп до шрифтоветеДостъп до шрифтовете

System.Drawing.PrintingSystem.Drawing.Printing Печатане на принтерПечатане на принтер Системни диалогови кутии за печатанеСистемни диалогови кутии за печатане

Page 97: PowerPoint презентация (1,34 MB)

Класът Класът GraphicsGraphics Класът Класът System.Drawing.GraphicsSystem.Drawing.Graphics

Предоставя абстрактна повърхност за Предоставя абстрактна повърхност за чертанечертане

Най-често чертането се извършва в Най-често чертането се извършва в обработчика на събитието обработчика на събитието PaintPaint PaintPaint преизчертава контролата при преизчертава контролата при

необходимостнеобходимост Параметърът Параметърът PaintEventArgsPaintEventArgs съдържа съдържа

GraphicsGraphics обектаобекта Може да се създава чрез Може да се създава чрез

Control.Control.CreateGraphics()CreateGraphics() Трябва да се освобождава чрез Трябва да се освобождава чрез finallyfinally

блок или с конструкцията блок или с конструкцията usingusing

Page 98: PowerPoint презентация (1,34 MB)

System.DrawingSystem.Drawing – пример – примерprivate void MainForm_Paint(object sender, private void MainForm_Paint(object sender, System.Windows.Forms.PaintEventArgs e)System.Windows.Forms.PaintEventArgs e){{ Graphics g = e.Graphics;Graphics g = e.Graphics; g.SmoothingMode = SmoothingMode.AntiAlias;g.SmoothingMode = SmoothingMode.AntiAlias;

Brush blueBrush = new SolidBrush(Color.Blue);Brush blueBrush = new SolidBrush(Color.Blue); g.FillEllipse(blueBrush, 50, 40, 350, 250);g.FillEllipse(blueBrush, 50, 40, 350, 250); blueBrush.Dispose();blueBrush.Dispose();

Pen redPen = new Pen(Color.Red, 2);Pen redPen = new Pen(Color.Red, 2); g.DrawRectangle(redPen, 40, 50, 200, 40);g.DrawRectangle(redPen, 40, 50, 200, 40); redPen.Dispose();redPen.Dispose();

Brush brush = new SolidBrush(Color.Yellow);Brush brush = new SolidBrush(Color.Yellow); Font font = new Font("Arial", 14, FontStyle.Bold);Font font = new Font("Arial", 14, FontStyle.Bold); g.DrawString(".NET Rulez", font, brush, 60, 60);g.DrawString(".NET Rulez", font, brush, 60, 60); brush.Dispose();brush.Dispose(); font.Dispose();font.Dispose();}}

Page 99: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #1166 Работа със Работа със System.DrawingSystem.Drawing

Page 100: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #1177 Анимация със Анимация със System.DrawingSystem.Drawing

Page 101: PowerPoint презентация (1,34 MB)

Печатане на принтерПечатане на принтер Използват се 3 ключови класа:Използват се 3 ключови класа:

PrintDialogPrintDialog Стандартен диалог за печатане на принтерСтандартен диалог за печатане на принтер

PrintControllerPrintController Управлява процеса на печатане и активира Управлява процеса на печатане и активира

събития, свързани с негосъбития, свързани с него Предоставя Предоставя GraphicsGraphics повърхността повърхността

PrintDocumentPrintDocument Описва характеристиките на отпечатвания Описва характеристиките на отпечатвания

документдокумент Съдържа Съдържа PrinterSettingsPrinterSettings върнати от върнати от

PrintDialogPrintDialog

Page 102: PowerPoint презентация (1,34 MB)

Потребителски контролиПотребителски контроли Потребителските контроли (custom Потребителските контроли (custom

controls)controls) Позволяват разширяване на Позволяват разширяване на

стандартния набор от контроли чрезстандартния набор от контроли чрез комбиниране на група контроли в еднокомбиниране на група контроли в едно разширяване и настройка на контроларазширяване и настройка на контрола създаване на съвсем нова контроласъздаване на съвсем нова контрола

Могат да управляват поведението сиМогат да управляват поведението си по време на дизайн – взаимодействат с по време на дизайн – взаимодействат с

дизайнера на дизайнера на VS.NETVS.NET по време на изпълнениепо време на изпълнение

Разширяват съществуващи контроли, Разширяват съществуващи контроли, класа класа ControlControl или или UserControlUserControl

Page 103: PowerPoint презентация (1,34 MB)

Създаване на контролиСъздаване на контроли Създаване на нова контрола, която не Създаване на нова контрола, която не

наследява никоя съществуващанаследява никоя съществуваща От От VS.NET VS.NET New Item New Item Custom Control Custom Control Наследяваме класа Наследяваме класа ControlControl Припокриваме виртуалния метод Припокриваме виртуалния метод

OnPaintOnPaint(…)(…) за да чертаем контролатаза да чертаем контролата Дефинираме необходимите свойства и Дефинираме необходимите свойства и

методиметоди Обявяваме свойствата, достъпни от Обявяваме свойствата, достъпни от

дизайнера чрез атрибути:дизайнера чрез атрибути: CategoryCategory – категория в дизайнера – категория в дизайнера DescriptionDescription – описание на свойството – описание на свойството

Page 104: PowerPoint презентация (1,34 MB)

Създаване на контрола – примерСъздаване на контрола – примерpublic class ClockControl : System.Windows.Forms.Controlpublic class ClockControl : System.Windows.Forms.Control{{ private int mHour;private int mHour; private int mMinute;private int mMinute;

[Category("Behavior"), [Category("Behavior"), Description("Specifies the hour.")]Description("Specifies the hour.")] public int Hourpublic int Hour {{ getget {{ return mHour;return mHour; }}

setset {{ mHour = value;mHour = value; this.Invalidate();this.Invalidate(); }} }} (примерът продължава)(примерът продължава)

Page 105: PowerPoint презентация (1,34 MB)

Създаване на контрола – примерСъздаване на контрола – пример [Category("Behavior"),[Category("Behavior"), Description("Specifies the minutes.")]Description("Specifies the minutes.")] public int Minutepublic int Minute {{ getget {{ return mMinute;return mMinute; }}

setset {{ mMinute = value;mMinute = value; this.Invalidate();this.Invalidate(); }} }}

private const int DEFAULT_SIZE = 100;private const int DEFAULT_SIZE = 100;

public ClockControl()public ClockControl() {{ this.Size = new Size(DEFAULT_SIZE, this.Size = new Size(DEFAULT_SIZE, DEFAULT_SIZE);DEFAULT_SIZE); mHour = DateTime.Now.Hour;mHour = DateTime.Now.Hour; mMinute = DateTime.Now.Minute;mMinute = DateTime.Now.Minute; }} (примерът продължава)(примерът продължава)

Page 106: PowerPoint презентация (1,34 MB)

Създаване на контрола – примерСъздаване на контрола – пример protected override void OnResize(System.EventArgs e)protected override void OnResize(System.EventArgs e) {{ this.Height = this.Width;this.Height = this.Width; this.Invalidate();this.Invalidate(); }}

protected override void OnPaint(PaintEventArgs pe)protected override void OnPaint(PaintEventArgs pe) {{ Graphics g = pe.Graphics;Graphics g = pe.Graphics;

// Draw the // Draw the clock clock circlecircle Pen pen = new Pen(Color.Blue, 1);Pen pen = new Pen(Color.Blue, 1); g.DrawEllipse(pen, 0, 0, g.DrawEllipse(pen, 0, 0, this.Width-1, this.Height-1);this.Width-1, this.Height-1);

// Draw the minute finger// Draw the minute finger and the clock finger and the clock finger // ...// ...}}

Page 107: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #1818 Потребителска контрола "Часовник"Потребителска контрола "Часовник"

Page 108: PowerPoint презентация (1,34 MB)

Създаване на контролиСъздаване на контроли Създаване на нова контрола, като Създаване на нова контрола, като

комбинация от други контроликомбинация от други контроли От VS.NET От VS.NET New Item New Item User Control User Control Използваме дизайнера на VS.NETИзползваме дизайнера на VS.NET Обявяваме design-time свойствата чрез Обявяваме design-time свойствата чрез

атрибутите атрибутите CategoryCategory и и DescriptionDescription Създаване на нова контрола, която Създаване на нова контрола, която

наследява съществуваща контроланаследява съществуваща контрола От VS.NET От VS.NET New Item New Item Inherited User Control Inherited User Control Дефинираме допълнителните свойства и Дефинираме допълнителните свойства и

методи и ги обявяваме за методи и ги обявяваме за VS.NETVS.NET дизайнера дизайнера Припокриваме Припокриваме OnXXX()OnXXX() методите при методите при

необходимостнеобходимост

Page 109: PowerPoint презентация (1,34 MB)

Хостинг наХостинг на контроли в контроли в IEIE Internet Explorer Internet Explorer може да изпълнява може да изпълнява

Windows Forms Windows Forms контроли вградени в контроли вградени в тялото на тялото на HTML HTML страницистраници Технологията е подобна на Технологията е подобна на Java Java

аплетите – вгражда се изпълним кодаплетите – вгражда се изпълним код Необходими са:Необходими са:

Internet Explorer Internet Explorer 5.55.5 или по-новили по-нов .NET Framework.NET Framework

Настройките за сигурност не позволяват Настройките за сигурност не позволяват достъп до файловата система и други достъп до файловата система и други опасни действияопасни действия

Сигурността може да се задава ръчноСигурността може да се задава ръчно

Page 110: PowerPoint презентация (1,34 MB)

Хостинг наХостинг на контроли – примерконтроли – пример<html><html>

<script><script> function ChangeText() {function ChangeText() { clockControl.Hour = hour.value;clockControl.Hour = hour.value; clockControl.Minute = minute.value;clockControl.Minute = minute.value; }}</script></script>

<body><body> <p>Clock Control in IE</p><p>Clock Control in IE</p> <object id="clockControl"<object id="clockControl" classid="http:Demo-18-CustomControl-classid="http:Demo-18-CustomControl-Clock.exe#Demo_18_CustomControl_Clock.ClockControl"Clock.exe#Demo_18_CustomControl_Clock.ClockControl" width="width="2200" height="00" height="2200">00"> <param name="Hour" value="14"><param name="Hour" value="14"> <param name="Minute" value="35"><param name="Minute" value="35"> </object></object> (примерът продължава)(примерът продължава)

Page 111: PowerPoint презентация (1,34 MB)

Хостинг наХостинг на контроли – примерконтроли – пример <br><br> <br><br> Hour:<input type="text" id="hour"><br>Hour:<input type="text" id="hour"><br> Minute:<input type="text" id="minute"><br>Minute:<input type="text" id="minute"><br> <input type="button" value="Update the clock"<input type="button" value="Update the clock" onclick="ChangeText()">onclick="ChangeText()">

</body></body>

</html></html>

От От JavaScript JavaScript могат да се достъпват могат да се достъпват свойствата на свойствата на Windows Forms Windows Forms контролитеконтролите

Page 112: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #1199 Хостинг наХостинг на контроли в контроли в IEIE

Page 113: PowerPoint презентация (1,34 MB)

Нишки и Нишки и Windows FormsWindows Forms В Windows Forms приложенията В Windows Forms приложенията

продължителните операции трябва да се продължителните операции трябва да се изпълняват в отделна нишкаизпълняват в отделна нишка В противен случай се получава "заспиване" на В противен случай се получава "заспиване" на

потребителския интерфейспотребителския интерфейс Обновяването на потребителския Обновяването на потребителския

интерфейс трябва да става само от интерфейс трябва да става само от нишката, в която работи контроланишката, в която работи контрола Никога не обновявайте Никога не обновявайте Windows Forms Windows Forms

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

методите методите Invoke()Invoke(), , BeginInvoke()BeginInvoke(), , EndInvoke()EndInvoke() и и CreateGraphics()CreateGraphics()

Page 114: PowerPoint презентация (1,34 MB)

Нишки и Нишки и Windows FormsWindows Forms Използвайте Използвайте Invoke()Invoke() метода на класа метода на класа

ControlControl за изпълнение на методи от за изпълнение на методи от нишката, която притежава контролатанишката, която притежава контролата::

delegate void StringParamDelegate(string aValue);delegate void StringParamDelegate(string aValue);

class Form1 : System.Windows.Forms.Formclass Form1 : System.Windows.Forms.Form{{ private void UpdateUI(string aValue)private void UpdateUI(string aValue) {{ // // UUpdate UI here …pdate UI here … }}

void AsynchronousCalculation()void AsynchronousCalculation() {{ // This runs in separate thread. Invoke UI update// This runs in separate thread. Invoke UI update this.Invoke(new StringParamDelegate(UpdateUI),this.Invoke(new StringParamDelegate(UpdateUI), new object[]{"някакъв параметър"});new object[]{"някакъв параметър"}); }}}}

Page 115: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #2020 Използване на нишки в Използване на нишки в Windows Windows

FormsForms приложения приложения

Page 116: PowerPoint презентация (1,34 MB)

Влачене (Влачене (Drag and DropDrag and Drop)) В контролата-източник:В контролата-източник:

В събитието В събитието MouseDownMouseDown викаме викаме DoDragDrop(DoDragDrop(……)) за да копираме данните за да копираме данните

В контролата-получател:В контролата-получател: Задаваме Задаваме AllowDropAllowDrop == truetrue Прихващаме събитието Прихващаме събитието DragEnterDragEnter

Проверяваме формата на идващите данниПроверяваме формата на идващите данни и и позволяваме / забраняваме получаванетопозволяваме / забраняваме получаването

DragEventArgs.Data.GetDataPresent(…)DragEventArgs.Data.GetDataPresent(…) Прихващаме събитието Прихващаме събитието DragDropDragDrop

Обработваме получените данниОбработваме получените данни DragEventArgs.Data.GetData (…)DragEventArgs.Data.GetData (…)

Page 117: PowerPoint презентация (1,34 MB)

Влачене – примерВлачене – примерprivate System.Windows.Forms.ListBox private System.Windows.Forms.ListBox LListBoxSource;istBoxSource;private System.Windows.Forms.ListBox private System.Windows.Forms.ListBox LListBoxTarget;istBoxTarget;

private void private void LListBoxSource_MouseDown(object sender,istBoxSource_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)System.Windows.Forms.MouseEventArgs e){{ Point mousePoint mousePosPos = new Point(e.X, e.Y); = new Point(e.X, e.Y); int selectedIndexint selectedIndex == LListBoxSource.IndexFromPoint(mouseistBoxSource.IndexFromPoint(mousePosPos);); if (selectedIndex != -1)if (selectedIndex != -1) {{ string string data = (string)data = (string) LListBoxSource.Items[selectedIndex];istBoxSource.Items[selectedIndex]; LListBoxSource.DoDragDrop(data,istBoxSource.DoDragDrop(data, DragDropEffects.Copy);DragDropEffects.Copy); }}}}

((примерът продължава)примерът продължава)

Page 118: PowerPoint презентация (1,34 MB)

Влачене – примерВлачене – примерprivate void private void LListBoxTarget_DragEnter(object sender,istBoxTarget_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)System.Windows.Forms.DragEventArgs e){{ if (e.Data.GetDataPresent(if (e.Data.GetDataPresent( DataFormats.UnicodeText))DataFormats.UnicodeText)) {{ e.Effect = DragDropEffects.Copy;e.Effect = DragDropEffects.Copy; }}}}

private void private void LListBoxTarget_DragDrop(object sender,istBoxTarget_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)System.Windows.Forms.DragEventArgs e){{ string data = (string)string data = (string) e.Data.GetData(e.Data.GetData( DataFormats.UnicodeText);DataFormats.UnicodeText); LListBoxTarget.Items.Add(data);istBoxTarget.Items.Add(data);}}

Page 119: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #2211 Влачене и пускане в Влачене и пускане в Windows FormsWindows Forms

Page 120: PowerPoint презентация (1,34 MB)

Конфигурационен файлКонфигурационен файл .NET Framework приложенията могат да .NET Framework приложенията могат да

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

От VS.NET можем да добавим От VS.NET можем да добавим конфигурационен файл:конфигурационен файл: File | Add New Item … | Application File | Add New Item … | Application

configuration file | App.configconfiguration file | App.config При компилиране При компилиране App.configApp.config се копира се копира

под име под име <име_на_проекта.exe.config><име_на_проекта.exe.config> По време на изпълнение настройките от По време на изпълнение настройките от

конфигурационния файл могат да бъдат конфигурационния файл могат да бъдат извличаниизвличани

Page 121: PowerPoint презентация (1,34 MB)

Примерен конфигурационен файл:Примерен конфигурационен файл:

Извличане на стойност:Извличане на стойност:

Конфигурационен файл – примерКонфигурационен файл – пример

<?xml version="1.0" encoding="utf-8" ?><?xml version="1.0" encoding="utf-8" ?><configuration><configuration> <appSettings><appSettings> <add key="<add key="usernameusername" value="Бай Иван" />" value="Бай Иван" /> <add key="<add key="languagelanguage" value="" value="US-ENUS-EN" />" /> </appSettings></appSettings></configuration></configuration>

App.configApp.config

string username = string username = System.Configuration.System.Configuration. ConfigurationSettings.AppSettings["ConfigurationSettings.AppSettings["usernameusername"];"];

// username = "// username = "Бай ИванБай Иван""

Page 122: PowerPoint презентация (1,34 MB)

Демонстрация #Демонстрация #2222 Извличане на настройки от Извличане на настройки от

конфигурационен файлконфигурационен файл

Page 123: PowerPoint презентация (1,34 MB)

Windows FormsWindows Forms

Въпроси?Въпроси?

Page 124: PowerPoint презентация (1,34 MB)

УпражненияУпражнения1.1. Какво представлява библиотеката Windows Какво представлява библиотеката Windows

Forms? Каква функционалност предоставя? Кога Forms? Каква функционалност предоставя? Кога се използва?се използва?

2.2. Какво е компонент? Какво представлява Какво е компонент? Какво представлява компонентният модел .NET Framework? Какво е компонентният модел .NET Framework? Какво е характерно за него?характерно за него?

3.3. Опишете програмния модел на Windows Forms. Опишете програмния модел на Windows Forms. Каква функционалност реализира той?Каква функционалност реализира той?

4.4. Кои са най-важните класове от Windows Forms? Кои са най-важните класове от Windows Forms? Кои са най-важните им методи и свойства?Кои са най-важните им методи и свойства?

5.5. Какво е характерно за всички Windows Forms Какво е характерно за всички Windows Forms контроли? Кои са общите им методи иконтроли? Кои са общите им методи и свойства?свойства?

6.6. Какво е характерно за формите в Windows Какво е характерно за формите в Windows Forms? Какви свойства имат те? Forms? Какви свойства имат те?

Page 125: PowerPoint презентация (1,34 MB)

УпражненияУпражнения7.7. Как се поставят контроли в дадена форма? Как се Как се поставят контроли в дадена форма? Как се

прихващат събития, породени от даденприхващат събития, породени от даден контрол?контрол?8.8. Реализирайте Windows Forms приложение, което Реализирайте Windows Forms приложение, което

представлява опростен вариант напредставлява опростен вариант на стандартния стандартния калкулатор в Windows. Калкулаторът трябва да калкулатор в Windows. Калкулаторът трябва да поддържа основнитеподдържа основните аритметични операции с аритметични операции с цели и реални числа.цели и реални числа.

9.9. Със средствата на Windows Forms реализирайте Със средствата на Windows Forms реализирайте играта "Хвани бягащия бутон". Игратаиграта "Хвани бягащия бутон". Играта представлява една форма, в която има един представлява една форма, в която има един бутон със заглавие "Натисни ме". Прибутон със заглавие "Натисни ме". При приближаване на курсора на мишката в близост приближаване на курсора на мишката в близост до бутона той трябва да "бяга от него"до бутона той трябва да "бяга от него" (да се (да се премества на друго място във формата, премества на друго място във формата, възможно по-далеко от курсора навъзможно по-далеко от курсора на мишката). мишката).

Page 126: PowerPoint презентация (1,34 MB)

УпражненияУпражнения10.10. Със средствата на Windows Forms реализирайте Със средствата на Windows Forms реализирайте

проста информационна система запроста информационна система за управление на управление на клиентите на дадена фирма. Системата трябва да клиентите на дадена фирма. Системата трябва да визуализира списък отвизуализира списък от клиенти (клиенти (ListBoxListBox) и да ) и да позволява добавяне, редактиране и изтриване на позволява добавяне, редактиране и изтриване на клиенти. Всекиклиенти. Всеки клиент е или юридическо или клиент е или юридическо или физическо лице. Юридическите лица се описват сфизическо лице. Юридическите лица се описват с наименование, вид (ЕТ, АД, ООД, сдружение, ...), наименование, вид (ЕТ, АД, ООД, сдружение, ...), Булстат, данъчен номер, адрес,Булстат, данъчен номер, адрес, телефон, телефон, email, email, Web-Web-сайт и МОЛ (който е физическо лице). Физическите сайт и МОЛ (който е физическо лице). Физическите лица селица се описватописват с име, презиме, фамилия, пол, ЕГН, с име, презиме, фамилия, пол, ЕГН, данни за лична карта, адрес, телефон и данни за лична карта, адрес, телефон и emailemail. . Приложението трябва да се състои от 3 форми – Приложението трябва да се състои от 3 форми – главна форма, съдържаща клиентите, формаглавна форма, съдържаща клиентите, форма за за въвеждане/редакция на юридическо лице и форма за въвеждане/редакция на юридическо лице и форма за въвеждане/редакция на физическовъвеждане/редакция на физическо лице. Използвайте лице. Използвайте подходящи Windows Forms контроли във формите. подходящи Windows Forms контроли във формите. Данните трябва даДанните трябва да се четат и записват в XML файл. се четат и записват в XML файл.

Page 127: PowerPoint презентация (1,34 MB)

УпражненияУпражнения11.11. Със средствата на Windows Forms реализирайте Със средствата на Windows Forms реализирайте

специализиран редактор за библиотеки сспециализиран редактор за библиотеки с текстови текстови документи. Една библиотека представлява документи. Една библиотека представлява съвкупност от текстови документи,съвкупност от текстови документи, организирани организирани дървовидно в папки. В една папка може да има дървовидно в папки. В една папка може да има документи и други папкидокументи и други папки (подобно на файловата (подобно на файловата система на Windows). Всеки документ представлява система на Windows). Всеки документ представлява някакъв текст снякакъв текст с форматиране. Редакторът трябва форматиране. Редакторът трябва да може да създава библиотеки, да чете/записва да може да създава библиотеки, да чете/записва библиотеки от/въвбиблиотеки от/във XML файл. Когато е отворена XML файл. Когато е отворена дадена библиотека,дадена библиотека, редакторът трябва да редакторът трябва да позволява редактиране на документите в нея позволява редактиране на документите в нея (промяна на текста и(промяна на текста и форматирането на отделни форматирането на отделни фрагменти от него), както и фрагменти от него), както и създаване/изтриване/преименуванесъздаване/изтриване/преименуване на папки и на папки и документи. документи. (упражнението (упражнението продължава)продължава)

Page 128: PowerPoint презентация (1,34 MB)

УпражненияУпражненияЗа дървото с папките трябва да се използва За дървото с папките трябва да се използва контролата контролата TreeViewTreeView,, а за активния документ - а за активния документ - RichEditRichEdit. Редакторът трябва да разполага с . Редакторът трябва да разполага с падащо меню, 2падащо меню, 2 контекстни менюта (за дървото с контекстни менюта (за дървото с папките и за полето за редактиране на документ), папките и за полето за редактиране на документ), 33 ленти с инструменти (за отваряне/записване на ленти с инструменти (за отваряне/записване на библиотека, за работа с дървото сбиблиотека, за работа с дървото с папките и за папките и за форматиране на активния в момента документ), форматиране на активния в момента документ), статус лента и подходящистатус лента и подходящи кратки клавиши за по-кратки клавиши за по-важните команди. Реализирайте и търсене и важните команди. Реализирайте и търсене и заменяне на текст взаменяне на текст в документите. документите.

12.12. Напишете Windows Forms приложение, в което се Напишете Windows Forms приложение, в което се въвежда информация за физическо лицевъвежда информация за физическо лице (име, (име, презиме, фамилия, ЕГН, адрес, телефон, email, презиме, фамилия, ЕГН, адрес, телефон, email, личен сайт) и въведеното селичен сайт) и въведеното се записва в XML файл. записва в XML файл. Реализирайте валидация на всяко едно от Реализирайте валидация на всяко едно от полетата и на цялатаполетата и на цялата форма, като използвате форма, като използвате подходящи регулярни изрази.подходящи регулярни изрази.

Page 129: PowerPoint презентация (1,34 MB)

УпражненияУпражнения13.13. Със средствата на Windows Forms и простото Със средствата на Windows Forms и простото

свързване на данни (simple data binding)свързване на данни (simple data binding) реализирайте приложение за управление на реализирайте приложение за управление на проста система с информация за градове ипроста система с информация за градове и държави. Всяка държава се описва с име, език, държави. Всяка държава се описва с име, език, население, национален флаг и списък отнаселение, национален флаг и списък от градове. градове. Всеки град се описва от име, население и Всеки град се описва от име, население и държава. Трябва да се реализирадържава. Трябва да се реализира навигация по навигация по градовете и държавите и редакция на градовете и държавите и редакция на информацията за тях, като не сеинформацията за тях, като не се използват използват списъчни контроли, а само текстови полета и списъчни контроли, а само текстови полета и просто свързване. Да сепросто свързване. Да се реализира четене и реализира четене и записване на данните в XML файл.записване на данните в XML файл.

Page 130: PowerPoint презентация (1,34 MB)

УпражненияУпражнения14.14. Със средствата на Windows Forms и сложното Със средствата на Windows Forms и сложното

свързване на данни (complex data binding)свързване на данни (complex data binding) реализирайте система, подобна на системата за реализирайте система, подобна на системата за управление на информация за градове иуправление на информация за градове и държави. Добавете към системата списък от държави. Добавете към системата списък от континенти за всяка държава. Законтиненти за всяка държава. За визуализацията визуализацията и навигацията използвайте таблици (и навигацията използвайте таблици (DataGridDataGrid) и ) и списъчни контроли.списъчни контроли. Реализирайте предходното Реализирайте предходното приложение като съхранявате данните не в XML приложение като съхранявате данните не в XML файл, а вфайл, а в релационна база от данни (напр. MS релационна база от данни (напр. MS SQL Server). Използвайте разкачения модел за SQL Server). Използвайте разкачения модел за достъпдостъп до данните (disconnected model) като до данните (disconnected model) като реализирате възможност за разрешаване нареализирате възможност за разрешаване на конфликтите, които възникват при работа с конфликтите, които възникват при работа с много потребители едновременно.много потребители едновременно.

Page 131: PowerPoint презентация (1,34 MB)

УпражненияУпражнения15.15. Създайте Windows Forms приложение, с което Създайте Windows Forms приложение, с което

могат да се въвеждат данни за физически имогат да се въвеждат данни за физически и юридически лица. Физическите лица се описват с юридически лица. Физическите лица се описват с име, ЕГН, адрес, телефон, email ииме, ЕГН, адрес, телефон, email и Web-сайт. Web-сайт. Юридическите лица се описват с наименование, Юридическите лица се описват с наименование, вид (ЕТ, АД, ООД,вид (ЕТ, АД, ООД, сдружение,сдружение, ...), Булстат, ...), Булстат, данъчен номер, адрес, телефон, email и Web-сайт данъчен номер, адрес, телефон, email и Web-сайт и МОЛ (име и ЕГН наи МОЛ (име и ЕГН на физическо лице). физическо лице). Използвайте наследяване на форми, като Използвайте наследяване на форми, като отделите в базова форма общитеотделите в базова форма общите елементи на елементи на потребителския интерфейс и общите полета от потребителския интерфейс и общите полета от формите за въвеждане наформите за въвеждане на физически и физически и юридически лица.юридически лица.

Page 132: PowerPoint презентация (1,34 MB)

УпражненияУпражнения16.16. Реализирайте Windows Forms приложение, което Реализирайте Windows Forms приложение, което

по ежедневните данни от дадено техническопо ежедневните данни от дадено техническо измерване за даден период (текстов файл с цели измерване за даден период (текстов файл с цели положителни числа) визуализира графичноположителни числа) визуализира графично резултатите като редица от правоъгълни резултатите като редица от правоъгълни стълбове. При обемни данни осигурете стълбове. При обемни данни осигурете възможност за скролиране на графиката.възможност за скролиране на графиката.

17.17. Със средствата на Windows Forms реализирайте Със средствата на Windows Forms реализирайте играта "морски шах" (в квадратна дъска сиграта "морски шах" (в квадратна дъска с размери 3 на 3 се поставят пулове "X" и "0"). размери 3 на 3 се поставят пулове "X" и "0"). Играчът трябва да може да играе срещу Играчът трябва да може да играе срещу компютъра в 2 режима: "компютърът играе компютъра в 2 режима: "компютърът играе оптимално" и "компютърът играе хаотично оптимално" и "компютърът играе хаотично (случайно)". Осигурете подходяща визуализация (случайно)". Осигурете подходяща визуализация и интерактивност на играта. и интерактивност на играта.

Page 133: PowerPoint презентация (1,34 MB)

УпражненияУпражнения18.18. Реализирайте Windows Forms MDI приложение, Реализирайте Windows Forms MDI приложение,

което може да отваря файлове с графични което може да отваря файлове с графични изображения (gif, jpg, png) и може да ги изображения (gif, jpg, png) и може да ги преоразмерява и да ги записва в друг файл.преоразмерява и да ги записва в друг файл.

19.19. Реализирайте Windows Forms приложение, което Реализирайте Windows Forms приложение, което показва даден текстов файл, като визуализира показва даден текстов файл, като визуализира всеки негов ред със специален ефект: всяка всеки негов ред със специален ефект: всяка буква първоначално се появява на случайно буква първоначално се появява на случайно място във формата и започва да се придвижва място във формата и започва да се придвижва анимирано към мястото си. За 2 секунди всяка анимирано към мястото си. За 2 секунди всяка буква трябва си е на мястото. След изчакване от буква трябва си е на мястото. След изчакване от 1 секунда се преминава към следващия ред от 1 секунда се преминава към следващия ред от входния файл.входния файл.

20.20. Със средствата на Windows Forms реализирайте Със средствата на Windows Forms реализирайте прост текстов редактор, който може да отваря прост текстов редактор, който може да отваря файлове с влачене от Windows Explorer.файлове с влачене от Windows Explorer.

Page 134: PowerPoint презентация (1,34 MB)

УпражненияУпражнения21.21. Наследете контролата Наследете контролата TextBoxTextBox и създайте и създайте

потребителска контрола потребителска контрола NumberTextBoxNumberTextBox, която , която позволява въвеждане само на числа. позволява въвеждане само на числа.

22.22. Направете Windows Forms потребителска Направете Windows Forms потребителска контрола контрола HourMinuteBoxHourMinuteBox, която се състои от 2 , която се състои от 2 NumericUpDownNumericUpDown полета и позволява въвеждане полета и позволява въвеждане на час и минута в интервала [0:00 - 23:59].на час и минута в интервала [0:00 - 23:59].

23.23. Реализирайте Windows Forms потребителска Реализирайте Windows Forms потребителска контрола "зарче", която представлява квадрат, в контрола "зарче", която представлява квадрат, в който могат да се изобразяват графично който могат да се изобразяват графично стойности от 1 до 6 (както са при стандартните стойности от 1 до 6 (както са при стандартните зарчета при някои игри). Контролата трябва да зарчета при някои игри). Контролата трябва да реализира собствено изчертаване и свойство реализира собствено изчертаване и свойство ""ValueValue" за задаване на текущата стойност. " за задаване на текущата стойност.

Page 135: PowerPoint презентация (1,34 MB)

УпражненияУпражнения24.24. С помощта на контролата "зарче" реализирайте С помощта на контролата "зарче" реализирайте

играта "състезание": Двама играчи играят играта "състезание": Двама играчи играят последователно. При всеки ход играчът, който е последователно. При всеки ход играчът, който е на ход, хвърля 2 зарчета (генерират се случайни на ход, хвърля 2 зарчета (генерират се случайни стойности) и мести толкова стъпки, колкото е стойности) и мести толкова стъпки, колкото е сумата от хвърлените зарове. Печели първият, сумата от хвърлените зарове. Печели първият, който премине сумата 50. Реализирайте който премине сумата 50. Реализирайте подходяща визуализация на позицията на подходяща визуализация на позицията на двамата играчи на хвърлените зарове. двамата играчи на хвърлените зарове.

25.25. Реализирайте играта "състезание" като Реализирайте играта "състезание" като Windows Windows Forms Forms контрола и я хостнете в Internet Explorer контрола и я хостнете в Internet Explorer използвайки подходяща Web-страничка. използвайки подходяща Web-страничка. Хвърлянето на заровете извиквайте с Хвърлянето на заровете извиквайте с JavaScript JavaScript при натискане на бутон от при натискане на бутон от WebWeb-страницата.-страницата.

Page 136: PowerPoint презентация (1,34 MB)

УпражненияУпражнения26.26. Със средствата на Windows Forms реализирайте Със средствата на Windows Forms реализирайте

приложение, което търси текст във всички приложение, което търси текст във всички файлове в дадена директория. Понеже търсенето файлове в дадена директория. Понеже търсенето е бавна операция, реализирайте я в отделна е бавна операция, реализирайте я в отделна нишка. При намиране на текста добавяйте файла нишка. При намиране на текста добавяйте файла и отместването, на което е намерен, в и отместването, на което е намерен, в ListBoxListBox контрола чрез главната нишка на приложението контрола чрез главната нишка на приложението като използвате като използвате Invoke()Invoke() метода на формата. метода на формата. Реализирайте възможност за прекратяване на Реализирайте възможност за прекратяване на търсенето. Реализирайте подходяща търсенето. Реализирайте подходяща визуализация при кликване върху някое от визуализация при кликване върху някое от намерените съвпадения в резултата.намерените съвпадения в резултата.

Page 137: PowerPoint презентация (1,34 MB)

УпражненияУпражнения27.27. Реализирайте Windows Forms приложение, което Реализирайте Windows Forms приложение, което

съдържа една текстова контрола, стойността на съдържа една текстова контрола, стойността на която се зарежда от конфигурационния XML файл която се зарежда от конфигурационния XML файл на приложението. При изходна приложението. При изход от приложението от приложението стойността на тази контрола трябва да се запазва стойността на тази контрола трябва да се запазва обратно вобратно в конфигурационния файл. За четене от конфигурационния файл. За четене от конфигурационния файл използвайтеконфигурационния файл използвайте System.Configuration.ConfigurationSettingsSystem.Configuration.ConfigurationSettings.AppSettings.AppSettings, а за писане в него използвайте, а за писане в него използвайте DOM парсера на .NET Framework. DOM парсера на .NET Framework.

Page 138: PowerPoint презентация (1,34 MB)

MSDN Library – MSDN Library – http://msdn.microsoft.comhttp://msdn.microsoft.com Microsoft Windows Forms QuickStarts Tutorial – Microsoft Windows Forms QuickStarts Tutorial –

http://www.csharpfriends.com/quickstart/winforms/dhttp://www.csharpfriends.com/quickstart/winforms/doc/default.aspxoc/default.aspx

Marj Rempel, Kenneth S. Lind, Marjorie Rempel, Marj Rempel, Kenneth S. Lind, Marjorie Rempel, MCAD/MCSD Visual C# .NET Certification All-in-One MCAD/MCSD Visual C# .NET Certification All-in-One Exam Guide, McGraw-Hill, 2002, ISBN 0072224436Exam Guide, McGraw-Hill, 2002, ISBN 0072224436

MSDN Library, Event Handling in Windows Forms – MSDN Library, Event Handling in Windows Forms – http://msdn.microsoft.com/library/en-us/vbcon/html/vhttp://msdn.microsoft.com/library/en-us/vbcon/html/vbconeventhandling.aspbconeventhandling.asp

Threading in Windows Forms – Threading in Windows Forms – http://www.yoda.arachsys.com/csharp/threads/winfohttp://www.yoda.arachsys.com/csharp/threads/winforms.shtmlrms.shtml

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

Page 139: PowerPoint презентация (1,34 MB)

J. Fosler, Windows Forms Painting: Best Practices – J. Fosler, Windows Forms Painting: Best Practices – http://www.martnet.com/~jfosler/articles/WindowsForhttp://www.martnet.com/~jfosler/articles/WindowsFormsPainting.htmmsPainting.htm

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