login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > Gecombineerd


Gegevens:
Geschreven door:
Abbas
Moeilijkheidsgraad:
Gemakkelijk
Hits:
8006
Punten:
Aantal punten:
 (5)
Aantal stemmen:
5
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (7)
 

Tutorial:

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...


pijl 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...


pijl 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.


pijl 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!


pijl top


« Vorige tutorial : Cookies Volgende tutorial : User Controls »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.014s