7.5 Eingabe-Dialogfeld
Textfelder in einem Formular bieten die Möglichkeit, Eingaben des Benutzers entgegenzunehmen. Allerdings können auch andere Steuerelemente vom Benutzer bedient werden. Wenn Sie den Benutzer unbedingt zu einer Eingabe veranlassen möchten, dann können Sie mit einem Eingabe-Dialogfeld arbeiten. Ein solches Dialogfeld stellt die Funktion InputBox() bereit.
Der Rückgabewert ist eine Zeichenkette. Das Eingabefeld kann mit einem Standardwert vorbelegt werden. Dies kann zur Hilfestellung oder zur schnelleren Verarbeitung dienen. Damit der Benutzer weiß, was und warum er etwas eingeben soll, können ein Titel und eine Eingabeaufforderung angezeigt werden. Ein Beispiel finden Sie im Projekt EingabeAusgabe, siehe Abbildung 7.17.
Private Sub cmdInput_Click(...) Handles ...
Dim eingabe As String
eingabe = InputBox("Bitte Ihren Namen:",
"Ihr Name", "Maier")
lblA.Text = eingabe
End Sub
Listing 7.9 Projekt »EingabeAusgabe«, Eingabe-Dialogfeld
Abbildung 7.17 Eingabeaufforderung mit InputBox()
Zur Erläuterung:
- Das Eingabe-Dialogfeld kann infolge beliebiger Ereignisse oder Abläufe erscheinen. Hier wurde ein Button zum Aufruf gewählt.
- Der erste Parameter dient für die Eingabeaufforderung, er muss angegeben werden.
- Die beiden anderen Parameter sind optional. Es können der Titel des Dialogfelds und ein Vorgabewert für das Textfeld angegeben werden.
- Der Rückgabewert wird im vorliegenden Programm gespeichert und ausgegeben.
Eingabe der Lottozahlen
Ein weiteres Beispiel (ebenfalls im Projekt EingabeAusgabe) soll die bessere Benutzerführung mithilfe eines Eingabe-Dialogfelds verdeutlichen. Der Benutzer soll seine Wahl für die Lottozahlen eingeben. Bekanntlich sind dies sechs verschiedene ganze Zahlen zwischen 1 und 49. Er wird so lange aufgefordert, Zahlen einzugeben, bis diese Bedingung erfüllt ist, siehe Abbildung 7.18. Falls er eine Zahl mehrfach eingibt oder eine Zahl außerhalb des erlaubten Bereichs wählt, wird die betreffende Eingabe wiederholt.
Abbildung 7.18 Eingabe von Lottozahlen
Private Sub cmdLotto_Click(...) Handles ...
Dim eingabe As String
Dim zahl As Integer
Dim lotto(5) As Integer
Dim gezogen As Boolean
Dim i, k As Integer
lblA.Text = ""
For i = 0 To 5
Do
gezogen = False
eingabe = InputBox("Eingabe: ",
"Zahl " & (i + 1))
Try
zahl = Convert.ToInt32(eingabe)
Catch ex As Exception
zahl = 0
End Try
For k = 0 To i – 1
If lotto(k) = zahl Then
gezogen = True
Exit For
End If
Next
Loop While gezogen Or
zahl < 1 Or zahl > 49
lotto(i) = zahl
lblA.Text &= zahl & " "
Next
End Sub
Listing 7.10 Projekt »EingabeAusgabe«, Lottozahlen
Zur Erläuterung:
- Die Eingabe wird zunächst in der Variablen eingabe gespeichert. Anschließend wird versucht, diese mithilfe der Methode ToInt32() der Klasse Convert in eine ganze Zahl umzuwandeln und in der Integer-Variablen zahl zu speichern.
- Das Feld lotto hat sechs Elemente. Die Elemente 0 bis 5 sind für die sechs Lottozahlen vorgesehen.
- Die Variable gezogen wird wiederholt benötigt, um festzuhalten, ob eine bestimmte Zahl schon gezogen wurde.
- Die äußere For-Schleife läuft von 0 bis 5, für die Eingabe der sechs Lottozahlen.
- Die Do...Loop-Schleife läuft auch dann noch einmal, wenn der Benutzer eine ungültige Zahl eingegeben hat. Dies wird dadurch erreicht, dass die Variable zahl innerhalb des Catch-Teils der Ausnahmebehandlung auf 0 gesetzt wird.
- Die eingegebene Zahl wird in der inneren For-Schleife mit allen bisher eingegebenen Zahlen verglichen. Wurde sie bereits gezogen, so wird die boolesche Variable gezogen auf True gesetzt.
- Die Bedingung für die Do...Loop-Schleife lautet: Wiederhole, wenn die eingegebene Zahl bereits gezogen wurde, wenn sie kleiner als 1 oder größer als 49 ist.
- Nach Verlassen der Do...Loop-Schleife wird die Zahl im Feld lotto gespeichert, damit sie mit allen nachfolgenden Zahlen verglichen werden kann.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.