WindowsForms Inleiding 1. Inleiding
2. Hello World
3. Invoer verwerken
4. Mini - rekenmachine
1. Inleiding
Met .NET kan je niet alleen websites of webapplicaties maken maar ook echte programma's. Dergelijk programma kan een eenvoudige zelfgemaakte 'kladblok'
of een Windows-like rekenmachine zijn, maar dit kan ook een heus programma zoals een agenda/kalender, muziekspeler zijn of zelfs spellen!
Er valt dus heel wat te maken met deze Windows Forms. Maar natuurlijk moet je bij het begin beginnen en daarom zal ik in deze tutorial de basis van Forms uitleggen.
Om te beginnen heb je één van volgende programma's nodig: Visual Studio, Visual C# Express, Visual Basic Express. De Express editions zijn gratis
te downloaden, je moet je enkel registreren met een geldig e-mailadres. Klik HIER om naar de pagina van de Express editions te gaan.
In deze tutorial zal ik de gebruikte voorbeelden zowel in C#.NET als VB.NET uitleggen, daarom is het misschien gemakkelijk om
allebei de programma's te installeren, tenzij je Visual Studio hebt, daar heb je alles in één. Maar genoeg theorie, praktijk nu...
top
2. Hello World
Het alomgekende eerste voorbeeld van elke programmeer - of scriptingtaal is een "Hello World" voorbeeld. In deze tutorial is dat niet anders.
We gaan een Form maken waarbij een MessageBox verschijnt met "Hello World" na het klikken op een knop. Open het programma en maak een nieuw project aan.
(File -> New Project...), afhankelijk van welk programma je hebt geopend is het C# of VB. Er verschijnt een kader waarin je verschillende types
van projecten kan kiezen. Kies hier voor "Windows" en in het venster rechts kies je voor "Windows Application", geef een naam op voor het project en klik op OK.
Er wordt een project aangemaakt met enkele verschillende standaardmappen / bestanden, deze zijn niet van belang, enkel de Form!
Je ziet een lege Form op je scherm. Klik met de rechtermuisknop op de Form en kies "Eigenschappen", er verschijnt een kader waar je veschillende
eigenschappen kan kiezen voor de Form. Verander de 'text' in 'Eerste Voorbeeld' en druk Enter. De titel van je Form (in de balk bovenaan) is nu veranderd.
Als volgt open je de 'ToolBox', dit is een scherm waarin je alle controls te zien krijgt die je op de Form kan plaatsen. Je opent de ToolBox via het menu View -> Toolbox
of de sneltoets Ctrl + Alt + X. Sleep een Button op je Form en wijzig de tekst van de knop in "Klik" of iets dergelijks, alsook het ID van de knop (Name).
Als dit klaar is dubbelklik je op de knop, er wordt nu een ander scherm getoond. Dit scherm bevat de code voor de Form, je ziet dat er een Event is aangemaakt voor de knop.
Iets als dit :
C# |
VB |
private void button1_Click(object sender, EventArgs e) {
}
|
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub
|
In dit event zetten we een stukje code dat ervoor zorgt dat er een MessageBox verschijnt met als tekst "Hello World". De code voor de MessageBox :
C# |
VB |
MessageBox.Show("Hello World");
|
MessageBox.Show("Hello World")
|
Onze volledige code van het event moet er nu ongeveer zoals dit uitzien :
C# |
VB |
private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Hello World"); }
|
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MessageBox.Show("Hello World") End Sub
|
Bewaar de bestanden door in elk venster Ctrl + S te duwen. Als de bestanden zijn bewaard klik je op de 'play'-knop bovenaan in de werkbalk of duw je op F5.
Het programma gaat de Form 'debuggen' (fouten opsporen), als er fouten zijn wordt er weergegeven welke fout en waar ze staat. Als er geen fouten zijn wordt
de code gecompileerd tot een .exe(cutable) file. Wanneer dit klaar is zal automatisch de Form worden geopend.
Je ziet een kader met een knop in, wanneer je nu op die knop klikt verschijnt er een kadertje met daarin de tekst "Hello World"!
Dit is natuurlijk heel eenvoudig, in de volgende voorbeelden verwerken we invoer en maken we een mini-rekenmachine om de controls wat beter te leren kennen...
top
3. Invoer verwerken
Natuurlijk zijn er heel wat meer controls dan een knop alleen, in programma's is er ook invoer van gegevens. Deze invoer kan door middel van een tekstvak, radiobutton,
checkbox, combobox (dropdownlist), enz... Deze invoer moet opgehaald worden om gebruikt te kunnen worden. In het volgende voorbeeld maken we een formulier en maken we gebruik van
vernoemde controls. Verwijder de code in het event van de knop, maar niet het Event zelf. Sleep nu de vier controls op je Form onder elkaar en plaats voor elke control een Label.
Zet de 'text'-property van de ComboBox op "Kies..." en verander de tekst van de labels in "Naam", "Geboortejaar", "Land", "Student".
Verander de tekst van de RadioButtons in 'België' en 'Nederland' of iets wat je zelf wil en verwijder de tekst van de CheckBox. Je Form zou er nu ongeveer zo moeten uitzien:
Nu moeten we de invoer van deze controls verwerken en als alles juist is ingegeven geven we deze gegevens weer in een MessageBox. Maar eerst gaan we onze dropdownlist dynamisch vullen met jaren.
Dubbelklik op de Form en in de code zul je zien dat er een Event wordt aangemaakt voor wanneer de Form geladen wordt. Hierin zet je volgend stukje code.
C# |
VB |
private void Form1_Load(object sender, EventArgs e) { object item; item = "Kies..."; comboBox1.Items.Add(item);
for (int i = 1970; i <= DateTime.Now.Year; i++) { item = i.ToString(); comboBox1.Items.Add(item); } }
|
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim item As Object item = "Kies..." comboBox1.Items.Add(item)
Dim i As Integer For i = 1970 To DateTime.Now.Year item = i.ToString() comboBox1.Items.Add(item) Next
End Sub
|
We declareren een object en geven het de naam 'item'. We zetten het eerste item op "Kies...", dit lijkt dubbel werk want de 'text' van de ComboBox staat al ingesteld.
Dit is omdat de 'text' verdwijnt als je tussen items wisselt en zo blijft de "Kies..." er bij staan. Daarna gaan we met een for-loop alle jaren af van 1970 tot en met het huidige jaar.
We geven telkens de loop gaat het item de volgende waarde en zetten deze bij in de ComboBox.
Nu moeten we enkele zaken gaan valideren: kijken of er iets ingevuld is in het tekstvak, er een jaar is geselecteerd en er een radiobutton is geselecteerd. De checkbox moet niet aangevinkt worden.
Als er een fout is in de validatie geven we deze weer in een MessageBox. De volgende code zet je in het button - event:
C# |
VB |
string fout = ""; int x = 0;
if (textBox1.Text == string.Empty) { fout = "- Geef een naam in!
"; x++; }
if (comboBox1.Text == "Kies...") { fout += "- Kies een geboortejaar!
"; x++; }
if (radioButton1.Checked == false && radioButton2.Checked == false) { fout += "- Kies een land!"; x++; }
if (x > 0) { MessageBox.Show("Er is/zijn " + x + " fout(en) opgetreden:
" + fout); }
|
Dim fout As String = "" Dim x As Integer = 0
If textBox1.Text = String.Empty Then fout = "- Geef een naam in!" + Environment.NewLine() x += 1 End If
If comboBox1.Text = "Kies..." Then fout += "- Kies een geboortejaar!" + Environment.NewLine() x += 1 End If
If radioButton1.Checked = False And radioButton2.Checked = False Then fout += "- Kies een land!" x += 1 End If
If x > 0 Then MessageBox.Show("Er is/zijn " & x & " fout(en) opgetreden:" & Environment.NewLine() & Environment.NewLine() & fout) End If
|
Wat we tot hiertoe hebben is de controle op de invoer, maar als alles correct is ingevoerd moet alles nog weergegeven worden.
In het volgende stukje code wordt de invoer verwerkt en weergegeven in een MessageBox.
C# |
VB |
if (x > 0) { MessageBox.Show("Er is/zijn " + x + " fout(en) opgetreden:
" + error); } else { string naam, jaar, land, student; naam = textBox1.Text; jaar = comboBox1.SelectedItem.ToString();
if (radioButton1.Checked) { land = radioButton1.Text; } else { land = radioButton2.Text; }
if (checkBox1.Checked) { student = "student"; } else { student = "geen student"; }
MessageBox.Show("Uw naam is " + naam + ", u bent geboren in het jaar " + jaar + ".
U woont in " + land + " en bent " + student + "."); }
|
If x > 0 Then MessageBox.Show("Er is/zijn " & x & " fout(en) opgetreden:" & Environment.NewLine() & Environment.NewLine() & fout) Else Dim naam, jaar, land, student As String
naam = textBox1.Text jaar = comboBox1.SelectedItem.ToString()
If (radioButton1.Checked) Then land = radioButton1.Text Else land = radioButton2.Text End If
If (checkBox1.Checked) Then student = "student" Else student = "geen student" End If
MessageBox.Show("Uw naam is " & naam & ", u bent geboren in het jaar " & jaar & "." & Environment.NewLine() & "U woont in " & land & " en bent " & student & ".")
End If
|
Dit is een iets uitgebreider voorbeeld, maar uiteindelijk niet echt ingewikkeld denk ik. Wat hebben we tot hier toe gezien:
- Controls op een Form slepen
- Eigenschappen zoals 'text' wijzigen
- Events maken voor een control
- Invoer valideren en weergeven
Natuurlijk is er véél meer dan wat we nu gezien hebben, maar dit is toch al een begin. In het volgende en laatste voorbeeld maken we een mini-rekenmachine.
top
4. Mini - rekenmachine
Maak een nieuwe WindowsApplication zoals helemaal in het begin werd uitgelegd, geef alleen nu als naam "Rekenmachine".
Op de Form sleep je twee tekstvakken, een dropdownlist (combobox), een knop en drie labels. Zorg dat je Form er ongeveer zoals dit uitziet:
Net als in het vorige gedeelte moet hier de invoer gevalideerd worden, alleen komt er nog een stukje bij. Niet enkel moet er iets worden ingevuld,
de invoer moet numeriek zijn. Als de invoer correct gebeurt kunnen we de bewerking uitvoeren en het resultaat netjes weergeven in een MessageBox.
Dubbelklik op de knop op je Form waardoor er een Event wordt gemaakt, in dit event zet je deze code:
C# |
VB |
private void button1_Click(object sender, EventArgs e) { double getal_een, getal_twee, resultaat; string keuze; resultaat = 0; if (textBox1.Text == string.Empty || textBox2.Text == string.Empty || comboBox1.Text == string.Empty) { MessageBox.Show("Alle velden invullen!"); } else { keuze = comboBox1.SelectedItem.ToString(); try { getal_een = double.Parse(textBox1.Text); getal_twee = double.Parse(textBox2.Text);
if (keuze == "+") { resultaat = getal_een + getal_twee; } if (keuze == "-") { resultaat = getal_een - getal_twee; } if (keuze == "*") { resultaat = getal_een * getal_twee; } if (keuze == "/") { resultaat = getal_een / getal_twee; } resultaat = Math.Round(resultaat, 3); MessageBox.Show("Het resultaat van " + getal_een + " " + keuze + " " + getal_twee + " is " + resultaat); } catch (Exception E) { MessageBox.Show(E.Message); } } }
|
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click Dim getal_een, getal_twee, resultaat As Double Dim keuze As String resultaat = 0
If textBox1.Text = String.Empty Or textBox2.Text = String.Empty Or comboBox1.Text = String.Empty Then MessageBox.Show("Alle velden invullen!") Else keuze = comboBox1.SelectedItem.ToString() Try getal_een = Double.Parse(textBox1.Text) getal_twee = Double.Parse(textBox2.Text)
If keuze = "+" Then resultaat = getal_een + getal_twee End If If keuze = "_" Then resultaat = getal_een - getal_twee End If If keuze = "*" Then resultaat = getal_een * getal_twee End If If keuze = "/" Then resultaat = getal_een / getal_twee End If
resultaat = Math.Round(resultaat, 3) MessageBox.Show("Het resultaat van " & getal_een & " " & keuze & " " & getal_twee & " is " & resultaat) Catch D As Exception MessageBox.Show(D.Message) End Try End If End Sub
|
Alles is vrij duidelijk, eerst controleren we op lege invoer. Als er iets is ingevoerd gaan we via een "try-catch blok" kijken of de invoer numeriek is. Waarom met try-catch?
Het programma kan vastlopen als de invoer niet numeriek is, met dit blok vangen we de fout op als ze zich zou voordoen. (Tutorial over Exception Handling: KLIK)
Als de invoer volledig correct is voeren we de gekozen bewerking uit en geven we het resultaat weer in een MessageBox.
Voor dat het resultaat wordt weergegeven ronden we het nog af op 3 cijfers na de komma, dit om te lange getallen te voorkomen. Het resultaat zou er ongeveer zo moeten uitzien:
Hierbij zijn we aan het einde van deze tutorial over een inleiding met WindowsForms. Zoals al eerder gezegd, met Form valt heel wat meer te maken dan hier beschreven maar voor alles is een begin.
Ik hoop dat ik met deze tutorial dat begin toch duidelijk heb kunnen brengen. Indien er vragen of opmerkingen zijn mag je dat gerust laten weten. Stem ook aub, zo weet ik wat jullie er van vinden!
top
|