7.5 Eingabe-Dialogfeld 

InputBox()
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 Default-Wert 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
Mehrfache Eingabe
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:
ToInt32()
- 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.