Eindelijk, in dit hoofdstuk beginnen we met het echte programmeerwerk. De 2 vorige hoofdstukken waren nodig om dit hoofdstuk met succes te kunnen afhandelen. Nu bent u reeds aardig op weg om Visual Basic .net programmeur te worden.
Stel, u wil de gebruiker in een formulier laten kiezen uit 3 talen. De uitleg over de Message Box (MsgBox) vindt u in het volgende puntje (2. Syntax van Message Box).
Met onderstaande 'Select Case'-instructie roept u het gewenste bericht op:
Select Case vs_taal
Case Is "N"
MsgBox "Nu verlaten ?"
Case Is "F"
MsgBox "Quittez maintenant ?"
Case Is "E"
MsgBox "End now ?"
Case Else
MsgBox "Onbekende taal ?"
End Select
In het begin van hoofdstuk 4 gaan we de 'Select Case'-instructie verduidelijken.
Een berichtenvenster of 'Message Box' (MsgBox) is een formulier die de gebruiker d.m.v. een kort bericht op iets wijst. Dit venster wordt vaak gebruikt om de gebruiker op een foutieve invoer te wijzen bv. de gebruiker typte letters in een tekstvak uitsluitend bestemd voor getallen.
In ons algemeen voorbeeld ziet de 'Message Box' eruit zoals op het volgende blad. Het eerste woord (hier: EINDE) komt in het midden van de 'Message Box'. Het laatste woord (hier: AFSLUITEN) komt steeds bovenaan. Het soort 'Message Box' bepalen we in het midden (hier: 'Exclamation' (uitroepteken))

Berichtenvenster 1
MSGBOX "EINDE" --> Elementair (eenvoudigste notatie)
| MSGBOX ("EINDE" , MsgBoxStyle.Critical, "AFSLUITEN")
'' MsgBoxStyle. Exclamation, " '' MsgBoxStyle.Information, '' Bij een volledige weergave van de 'Message Box' hebben we 3 elementen. |
Het middelste element nl. de VB-code is gewijzigd:
Vroeger: vbCritical Nu: MsgBoxStyle.Critical
Vroeger: vbExclamation Nu: MsgBoxStyle. Exclamation
Vroeger: vbInformation Nu: MsgBoxStyle. Information
Ander concreet voorbeeld: in een spelletje geven we onderstaande code weer.
dim vs_Antwoord as Integer
vs_Antwoord=MSGBOX("Wil je opnieuw spelen?", MsgBoxStyle.Question + vbYesNo, "EINDE SPEL")
if vs_Antwoord=vbyes then
else
end if
We analyseren de belangrijkse regel uit dit spelletje:
vs_Antwoord=MsgBox("Wil je opnieuw spelen?", vbQuestion + vbYesNo, "EINDE SPEL")
| Aan de linker kant van het gelijkheidsteken staat de variabele vs_Antwoord. | |
| Rechts ziet u MsgBox, die staat voor berichtenvenster of 'Message Box'. Bovenaan het berichtenvenster komt "EINDE SPEL". In het midden van dit berichtenvenster krijgt de gebruiker de vraag "Wil je opnieuw spelen?". Hij kan vervolgens kiezen voor 'Yes' of 'No'. |
Iets verder in dit hoofdstuk zullen we het spel hoger/lager samen programmeren.
Wat gebeurt er bij het indrukken van een toets ?
- KeyDown (=Key-code)
- KeyPress (=Key-code)
- KeyUp (=Key-code)
- Met een zelf gekozen formulier (form) opstarten
Klik met de rechter muisknop op het VB project (Hier: 'WindowsApplication11') in 'Solution Explorer' (zie afbeelding 6)

Afbeelding 6
Kies nu voor eigenschappen (Properties) die u onderaan de lijst vindt.
U krijgt nu onderstaand scherm te zien:
Afbeelding 7
Onder 'Startup object' (afbeelding 7) kan u door te klikken op het pijltje, kiezen met welk formulier u wil opstarten. Klik vervolgens op OK.
- Een scherm sluiten en een ander opstarten.
| LOAD |
Form1.Show 0 1 = vbModal -->Als de gebruiker beslist moet antwoorden. |
| Form1.Show |
LOAD --> Form1.Show 0 1 = vbModal ---> Als de gebruiker beslist moet
antwoorden.
'Form1.Show' (doet: LOAD Form1 & Form1.Show)
Schrijfwijzen - in de code - voor de form:
Form1.Show.vbModal
Form1.Show
Methodes forms en verklaring:
Form1.Show: tonen van Form1
Form1.Hide: verbergen van Form1
Form1.Visible : zichtbaar maken van Form1
Gebruik instructie ME:
| De VB-instructie ME kunnen we enkel gebruiken als we een handeling willen verrichten met het formulier waarmee we op dit ogenblik bezig zijn. Als u in de code van dit formulier aan het programmeren bent, gebruikt u bij voorkeur 'ME'. |
Hieronder voorbeelden:
Me.Show : tonen huidig formulier
Me.Hide : verbergen huidig formulier
Me.Close : sluit het huidige formulier (gebruikt geen geheugenruimte meer)
Me.Visible : maakt het huidig formulier zichtbaar
Bij VB instructies mag u kiezen tussen grote en kleine letters, u mag zelfs mengen. VB herkent deze instructies en plaatst ze in een kleurtje. Als u in de code de naam van een besturingselement (Control) of een formulier (Form) ingeeft en vervolgens een punt plaatst, krijgt u automatisch een scherm met mogelijkheden. Dit zijn de mogelijkheden die deze 'Control' of 'Form' heeft. Als u de verkeerde naam intikt, krijgt u dit venster niet. Zo ziet u onmiddellijk dat u fout bezig bent.
Als u in een tekstvak (TekstBox) de eigenschap (Property) scrollbars gebruikt (bv. vertical) moet u 'Multiline' op 'True' plaatsen. Indien u dit niet doet, ziet de gebruiker deze schuifbalk niet.
Als u een controle wil uitvoeren op de gegevens die een gebruiker invoerde dan gebruikt u het 'Event' genaamd 'Validating'. Het voorbeeld ziet u op "Codevenster 3".

Codevenster 3
Toen u dubbelklikte op het tekstvak kreeg u automatisch TextBox1_TextChanged In het rechter vak - waar nu TextBox1_Validating staat, stond dan TextBox1_TextChanged.
De naam van de variabele kiezen we in onze voorbeelden willekeurig; u mag dus gerust een andere naam kiezen.
'Naam van de control'. Focus Deze instructie plaatst de cursor in het betreffende besturingselement. Dit bevel kan u bijvoorbeeld gebruiken om de gebruiker - na een voorheen foute ingave - onmiddellijk in het juiste vak te plaatsen. Dat hij/zij een foutieve invoer deed, kan u duidelijk maken met een 'Message Box'.
Als u iets programmeert mag u het uiteraard niet te vlug opgeven. Indien u het echt niet vindt, zoek dan geen uren maar laat het eens één of enkele dagen liggen. De oplossing schiet u dan vaak vanzelf binnen.
Belangrijke tip: Vergeet niet om waar nuttig commentaartekst in de code te plaatsen. U dient dan wel in het begin van elke regel die commentaar bevat een ' (accent) te paatsen. Bouw deze gewoonte nu reeds in want dit is heel belangrijk bij grote projecten en dit zowel voor uzelf als voor uw collega's.
Nog een uiterst belangrijke tip : weet dat er voor één opgave (oefening) steeds meerdere oplossingen zijn. Als het programma doet wat gevraagd werd, hebt u dit goed geprogrammeerd!
Met deze oefening verwerft u enkele bijkomende inzichten. We zullen een spelletje
hoger/lager programmeren en gebruiken hierbij een 'Random'-getal. Een 'Random'-getal
is een willekeurig getal, die de computer blindelings uit een trommel met getallen
haalt. Dit 'Random'-getal komt bovenaan in het formulier vooraleer we beginnen
spelen; dus wordt het gelezen bij het laden van het formulier (form1_load).
We gebruiken de icoontjes om te tonen of we hoger of lager moeten raden. Deze
iconen kan u volledig vrijblijvend bestellen door onderaan deze site te klikken
op Marc Vandenbussche. Het icoontje "vinkje" betekent dat we juist
geraden hebben.
Bovendien wordt bijgehouden hoeveel keer we geraden hebben. Als we juist geraden
hebben, krijgen we te zien in hoeveel keer we dit geraden hebben.

Enkele zaken worden gegeven:
- Knop (button) met Go: 'BtnGo' (naam)
- Het vierkante vakje links van 'BtnGo' is een 'PictureBox': 'PictGo' (naam)
- Het vakje boven 'BtnGo' is een tekstbak: 'txtGetal' (naam)
- Het vakje onder 'BtnGo' is een label (geen 'LinkLabel'): 'lblGo' (naam)
Belangrijk : Het pad naar uw iconen
De regels waarin staat:
= Image.FromFile("e:\d\vb_net\up.ico")
= Image.FromFile("e:\d\vb_net\down.ico")
= Image.FromFile("e:\d\vb_net\ok.ico")
= Image.FromFile("e:\d\vb_net\question.ico")
| Alle ico-bestanden bevinden zich in de code in de submap: e:\d\vb_net\ Deze submap heet vb_net en bevindt zich onder de map d. De map d staat op de schijf e. Natuurlijk kan u verwijzen naar een zelf gekozen map op uw c-schijf !!! | |
| Indien u verwijst naar een andere map of naar een andere schijf (bv. uw c-schijf) dan zal u dit in de code moeten aanpassen. Doet u dit niet dan zal het programma niet werken. |
De code correct overnemen is belangrijk. U dient bovendien zeer goed
rekening te houden met voorgaande opmerkingen!
Dim sho_Getal As Short
Dim sho_Beurten As Short
' sho is de naamconventie van short vb'n: sho_Getal,sho_Beurten
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
txtGetal.Text = ""
lblGo.Text = ""
PictGo.Image = Image.FromFile("e:\d\vb_net\question.ico")
Call Op_Random_Getal()
End Sub
Private Sub BtnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles BtnGo.Click
sho_Beurten = sho_Beurten + 1
Select Case Val(txtGetal.Text)
Case Is < sho_Getal
PictGo.Image = Image.FromFile("e:\d\vb_net\up.ico")
Case Is > sho_Getal
PictGo.Image = Image.FromFile("e:\d\vb_net\down.ico")
Case Else
PictGo.Image = Image.FromFile("e:\d\vb_net\ok.ico")
lblGo.Text = "Aantal beurten : " & sho_Beurten
If MsgBox("Nog", vbYesNo, "SPEEL") = vbYes Then
PictGo.Image = Image.FromFile("e:\d\vb_net\question.ico")
lblGo.Text = ""
Call Op_Random_Getal()
Else
End
End If
End Select
txtGetal.Text = ""
End Sub
Private Sub Op_Random_Getal()
Randomize()
sho_Getal = Int((100 * Rnd()) + 1)
sho_Beurten = 0
Me.Text = sho_Getal
'Onderstaande regel zorgt voor de schermverversing.
Me.Refresh()
End Sub
Probeer deze code zo goed mogelijk te begrijpen. De instructie 'Call Op_Random_Getal' die u vindt in de procedure "(Private Sub) Form1_Load" roept de procedure "(Private Sub)Op_Random_Getal" aan. Daar 'Private Sub' betekent dat er een procedure is, mogen we deze woorden weglaten en er 'Call' voor zetten. Hij roept dan -zoals in bovenstaande oefening- deze procedure aan.
Ik gebruik in de laatste procedure de code 'Me.Refresh'. Dit is niet verplicht maar kan nuttig zijn om het scherm te vernieuwen. Meestal gebeurt dit automatisch.
Deze oefening is niet opgenomen in deze website. U kan echter de volledige cursus, die bestaat uit 10 hoofdstukken (incl. 2 appendices) en 114 pagina's, bestellen. Meer info vindt u onder de link "Bestellen cursus" (linker kolom).