Урок 5: Събитийно програмиране

До колко разбираме програмирате, които използваме всеки ден като Facebook, google, Winamp, bgmaps и тн.? Във всички тези програми има неща, които се случват сякаш автоматично. Например още щом започнем да пишем име на наш приятел във Facebook и ни излиза списък с предложения, кого търсим. Или когато свърши една песен в Winamp, автоматично започва следваща. В този урок ще видим, че всъщност зад всички тези неща стои програмен код и ще се научим как да пишем такъв код във Visual Basic.

Visual Basic 2010 - Пример за събития във Facebook

Цел на урока: Да описваме понятието събитийно програмиране и неговите характеристики. Да използваме основни събития в наша програма.

Увод: Visual Basic е език за събитийно програмиране, което означава, че всеки код, който пишем съответства на дадено събитие. (натискане с мишката, двукратно натискане с мишката, преминаване през контролата с мишката и други) От това следват 2 основни неща:

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

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

Нов материал:

1. Събитие – информира програмата, когато нещо важно се случи.

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

2. Характеристики на събитийно пограмиране

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

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

3. Видове събития

- натискане с мишката: Click

- двойно натискане с мишката: DoubleClick

- зареждане на формата – настъпва, когато стартираме програма: Form_Load

- промяна на съдържанието на етикет/текстово поле: настъпва, когато променим съдържанието (свойството “Text”): TextChanged

- загуба на фокус на текстово поле: настъпва, когато курсорът на мишката се премести от текстовото поле извън него (например към друго текстово поле): LostFocus

Примерна задача: Да се напише програма, която при натискане на етикет един път изписва в текстово поле “Clicked once” при натискане на етикет два пъти – изписва в текстовото поле “Clicked twice”.

Решение:

Разполагаме един етикет (Label) и 2 текстови полета (Textbox) върху формата. Натискаме 2 пъти с мишката върху етикета и ни се отваря редактор със събитието Label1_Click. Кодът който пишем вътре в това събитие (между Label1_Click и End Sub) ще се изпълни при настъпване на събитието – натискане 1 с мишката път върху етикет1.

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
TextBox1.Text = "Clicked once"
End Sub

След това, за да заредим другото събитие – двукратно натискане с мишката върху етикет1, трябва да отворим падащото меню горе вдясно на редактора, където са изброени всички събития. И от менюто избираме събитие DoubleClick.

Events menu

След това пишем кода в тялото на събитието Label1_DoubleClick (между Label1_DoubleClick и End Sub) - TextBox1.Text = “Clicked twice”

Private Sub Label1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.DoubleClick
TextBox1.Text = "Clicked twice"
End Sub

Events Properties Window

Има и друг начин за избор на събитие – когато гледаме дизайна на програмата Form [Design]. Натискаме контролата, с която искаме да работим и от менюто Properties долу вдясно избираме иконката Events .

Задачи за самостоятелна работа: 

  1. Да се напише програма, която със зареждането на формата изписва в етикет “Form loaded”. При загуба на фокуса в текстово поле 1, то да изчезва (visible). При промяна на съдържанието на текстово поле 2, текстово поле 1 отново да се показва.
  2. Да се напише програма, която съдържа 4 етикета, текстово поле и бутон.  В текстовото поле се въвежда число N (от 1 до 4). При натискането на бутон да изчезват етикета с номер N.

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

3. Направете задача, която съдържа 6 етикета. При натискане на който и да е от етикетите да изчезва следващия номер етикет (при натискане на етикет 6 – да изчезва етикет 1)

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

Още по тематаhttp://www.vbtutor.net/vb2010/vb2010_Lesson5.htm

Comments are closed.