Enum weiterzählen

21/11/2009 - 15:42 von Volker Heil | Report spam
Hi,

ich möchte eine Enumeration mit Farbwerten pro Klick auf einen Button
weiterschalten.
Kein Problem bei Option Strict OFF:

Public Enum eZustand As Int32
rot = 0
grün = 1
blau = 2
End Enum

Dim Zustand as eZustand

sub BeiKlick...
Zustand = Zustand + 1
If Zustand > 2 Then Zustand = 0
...
end sub

Aber:
Erstens ist "Zustand > 2" nicht so doll, denn die Enum-Werte könnten
sich àndern
und es könnten weitere Werte dazu kommen.
Zweitens ergibt das bei Option Strict ON einen Fehler.

Wie geht das besser?

Tschüss,

Volker
 

Lesen sie die antworten

#1 Armin Zingler
21/11/2009 - 15:49 | Warnen spam
Volker Heil schrieb:
Hi,

ich möchte eine Enumeration mit Farbwerten pro Klick auf einen Button
weiterschalten.
Kein Problem bei Option Strict OFF:

Public Enum eZustand As Int32
rot = 0
grün = 1
blau = 2
End Enum

Dim Zustand as eZustand

sub BeiKlick...
Zustand = Zustand + 1
If Zustand > 2 Then Zustand = 0
...
end sub

Aber:
Erstens ist "Zustand > 2" nicht so doll, denn die Enum-Werte könnten
sich àndern
und es könnten weitere Werte dazu kommen.
Zweitens ergibt das bei Option Strict ON einen Fehler.

Wie geht das besser?



Es gibt per Definition keine Reihenfolge bei Enums. Der numerische Wert
ist normalerweise irrelevant. Insofern gibt es auch kein Weiterzàhlen.
Was der "nàchste" Wert ist, musst du über eine gesonderte Logik bestimmen,
z.B. durch eine entsprechende Funktion.

select case aktuell
case zustand.rot
nàchster = zustand.grün
case zustand.grün
nàchster = zustand.blau
case zustand.blau
nàchster = zustand.rot
end select


Armin

Ähnliche fragen