algemene vraag

Status
Niet open voor verdere reacties.

vson

Gebruiker
Lid geworden
23 nov 2000
Berichten
341
Ik ben een newbie in VB.net en heb de volgende vraag :

Ik heb op een form 5 labels en een button .
Elke keer dat ik op de button klikt moet de achtergrond kleur van een
label veranderen te beginnen bij label1 .
dus klik kleur lbl1 verandert...klik lbl2 enz....
De startwaarde in label2 : i=1

Nadat de kleur van de 5e label is bereikt begint het proces opnieuw.
label 2 wordt nu : i=2
Dit proces moet doorgaan totdat in label 2 : i=3 wordt .

Het probleem dat ik heb is, als ik op de button klikt, de waarde van label2 wel verandert
maar dat alleen de achtergrondkleur van label1 verandert bij elke klik .
De andere labels veranderen niet van kleur.

Wie heeft er wat tips voor mij?.
 
Ik heb wel een tip voor jou, maar is het niet beter om de code die je tot nu toe hebt eerst even hier te plaatsen?

Dennis.
 
Dit is mijn code :

For i = 1 To 3
label1.BackColor = BackColor.Yellow()
label2.BackColor = BackColor.Yellow()
Label3.BackColor = BackColor()
Label4.BackColor = BackColor()
label2.Text = "i= " & i
Next
i = i + 1

End Sub
 
Het spijt mij, dat ik VB.NET niet op mijn pc geïnstalleerd heb staan.
Ik zal dit eerstdaags zeker wel doen. Maar misschien werkt mijn VB code ook wel. Probeer het maar even.
Elke keer wanneer de 5 labels een kleurverandering ondergaan, dan dien je nog een keer op de knop te klikken om zo de achtergrondkleur van alle labels weer naar wit terug te zetten.

Onderstaande code is een Click event voor de knop, copieer dus de code met weglating van de 'Private Sub Command1_Click()' en 'End Sub', deze zijn respectievelijk de bovenste en onderste regels.


Code:
Private Sub Command1_Click()
   TellerLabels = TellerLabels + 1
   'TellerLabels wordt na het klikken op de knop
   'steeds met 1 opgehoogd . Wanneer de waarde 6
   'wordt bereikt, dan ondergaat alle 5 labels
   'een kleurverandering. De cyclus begint dan
   'weer opnieuw totdat de waarde 3 voor i bereikt is
   'dan stopt het programma. Althans de knop wordt
   'niet meer in werking gezet.
   If TellerLabels = 6 And i = 3 Then
       Command1.Enabled = False
       TellerLabels = 0
       i = 0
       Else
       'Wanneer er weer met een nieuwe cyclus moet
       'worden begonnen, dan worden de Backcolor van alle
       'labels op wit gezet.
       If TellerLabels = 6 Then
           TellerLabels = 0
           Label1.BackColor = &HFFFFFF
           Label2.BackColor = &HFFFFFF
           Label3.BackColor = &HFFFFFF
           Label4.BackColor = &HFFFFFF
           Label5.BackColor = &HFFFFFF
       End If
   End If
   'Hier wordt ernaar gekeken of er sprake
   'is v.e. nieuw cyclus. Zo ja, dan wordt
   'i met 1 vermeerderd.
   If TellerLabels = 1 Then
       i = i + 1
   End If
   'Met onderstaande statement wordt gedecteerd welk label
   'een achtergrondkleur verandering moet ondergaan.
   Select Case TellerLabels
      Case 1
          Label1.BackColor = &HFFFF& 'Geel
      Case 2
          Label2.BackColor = &HFF& 'Rood
          Label2.Caption = "i= " & i
      Case 3
          Label3.BackColor = &HC000& 'Groen
      Case 4
          Label4.BackColor = &H404040 'Zwart
      Case 5
          Label5.BackColor = &HFF0000 'Blauw
   End Select
End Sub

Verder moet je bij de General_Declarations nog onderstaande variabelen declareren:

Dim TellerLabels As Integer
Dim i As Integer

En ook de achtergrondkleur van alle labels bij de eigenschappen van die labels op de kleur wit te zetten.

Dennis.
 
Geen dank, graag gedaan. Vraag gerust als je iets wilt weten, maar ik pretendeer niet alles te weten hoor.

Even een opmerking van je eigen code:

1) Een lus is helemaal niet nodig, omdat zoals je het zelf beschreven hebt, dat de kleurverandering pas moet plaatsvinden indien er op de knop geklikt wordt. VB.NET en VB is een event-driven programmering.

2) Ik vind er maar 4 labels i.p.v. 5

3) Een aparte statement voor de ophoging v.d. variabele i is niet nodig, omdat je de waarde ervan vanuit de lus zelf kunt halen. Echter zoals ik al eerder zei is het gebruik v.e. lus overbodig. Zie mijn code hoe dit dan wel gerealiseerd moet worden.

Dennis.
 
Ik heb je code ingevoerd, maar het blijkt dat alleen label1 van kleur verandert . met de overige gebeurt er niets .

Het is inderdaad 4 labels i.p.v 5.

Als je nu bv. bij elke klik op een button van label1 naar label2 etc.. moet gaan .
Hoe ziet dan de code eruit .
Dat snap ik nog niet goed.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan