Benutzer mit den meisten Antworten
Commands erstellen

Frage
-
Hallo,
Kann man so eine Art von Commands erstellen also ich meine sowas hier.
Wenn ein Nutzer z.B. in eine Textbox eingibt z.B. d 23 = 23 Tage also ich meine wenn einer z.B. einen bestimmten Buchstaben eingibt und dahinter eine beliebige Zahl dass das Programm dann herrausgibt in diesem Beispiel 23 Tage
geht sowas und wenn ja, WIE?
im Sinne von:
h: Stunde
d: Tag
s: Sekunde
min: Minute
usw.
Antworten
-
Hallo,
fange einfach das TextChanged-Event der TextBox ab und verarbeite es. Es geht auch wenn du es in einem anderen Eventhandler verarbeitest.Die eigentliche Verarbeitung hängt sehr stark vom Vorhaben ab. Das was du beschrieben hast, geht mit folgendem Code:
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged Dim teile As String() = TextBox1.Text.Split(" "c) 'Aufsplitten am Leerzeichen If teile.Length = 2 Then 'Nur wenn 2 Teile da sind Select Case teile(0) Case "d" 'Teil 1 ist ein "d" '2. Teil und Einheit verbinden und Ausgeben Label1.Text = teile(1) & " Tage" Case "s" 'Teil 1 ist ein "d" '2. Teil und Einheit verbinden und Ausgeben Label1.Text = teile(1) & " Sekunden" End Select End If End Sub
Ich persönlich würde die Einheit zwar hinten drann hängen, ist aber deine Entscheidung (Ggf. Indexer für teile umdrehen.)
Den Text in der TextBox selbst würde ich erst ändern, wenn die TextBox den Fokus verliert. (Leave-Event)
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Bearbeitet Tom Lambert (Koopakiller)Moderator Donnerstag, 3. Oktober 2013 18:31 Link repariert
- Als Antwort vorgeschlagen Ciprian Bogdan Freitag, 4. Oktober 2013 10:14
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Donnerstag, 17. Oktober 2013 20:32
-
ja, für diesen Fall musst du dann nach und nach alle Teile durch gehen.
Label1.Text = "" Dim teile As String() = TextBox1.Text.Split(" "c) 'Aufsplitten am Leerzeichen Dim einheit As String = "" 'Hier wird die Einheit zwischen gespeichert For Each teil As String In teile Select Case teil Case "d" 'Teil 1 ist ein "d" '2. Teil und Einheit verbinden und Ausgeben einheit = " Tage" Case "s" 'Teil 1 ist ein "d" '2. Teil und Einheit verbinden und Ausgeben einheit = " Sekunden" Case Else 'Keine Einheit > einfach wieder anhängen Label1.Text &= teil & einheit einheit = "" 'Einheit wieder löschen End Select Next
Weitere Anpassungen sind problemlos möglich und das solltest du mittlerweile auch selbst hin bekommen können ;)Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Donnerstag, 17. Oktober 2013 20:32
Alle Antworten
-
Hallo,
fange einfach das TextChanged-Event der TextBox ab und verarbeite es. Es geht auch wenn du es in einem anderen Eventhandler verarbeitest.Die eigentliche Verarbeitung hängt sehr stark vom Vorhaben ab. Das was du beschrieben hast, geht mit folgendem Code:
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged Dim teile As String() = TextBox1.Text.Split(" "c) 'Aufsplitten am Leerzeichen If teile.Length = 2 Then 'Nur wenn 2 Teile da sind Select Case teile(0) Case "d" 'Teil 1 ist ein "d" '2. Teil und Einheit verbinden und Ausgeben Label1.Text = teile(1) & " Tage" Case "s" 'Teil 1 ist ein "d" '2. Teil und Einheit verbinden und Ausgeben Label1.Text = teile(1) & " Sekunden" End Select End If End Sub
Ich persönlich würde die Einheit zwar hinten drann hängen, ist aber deine Entscheidung (Ggf. Indexer für teile umdrehen.)
Den Text in der TextBox selbst würde ich erst ändern, wenn die TextBox den Fokus verliert. (Leave-Event)
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Bearbeitet Tom Lambert (Koopakiller)Moderator Donnerstag, 3. Oktober 2013 18:31 Link repariert
- Als Antwort vorgeschlagen Ciprian Bogdan Freitag, 4. Oktober 2013 10:14
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Donnerstag, 17. Oktober 2013 20:32
-
ja, für diesen Fall musst du dann nach und nach alle Teile durch gehen.
Label1.Text = "" Dim teile As String() = TextBox1.Text.Split(" "c) 'Aufsplitten am Leerzeichen Dim einheit As String = "" 'Hier wird die Einheit zwischen gespeichert For Each teil As String In teile Select Case teil Case "d" 'Teil 1 ist ein "d" '2. Teil und Einheit verbinden und Ausgeben einheit = " Tage" Case "s" 'Teil 1 ist ein "d" '2. Teil und Einheit verbinden und Ausgeben einheit = " Sekunden" Case Else 'Keine Einheit > einfach wieder anhängen Label1.Text &= teil & einheit einheit = "" 'Einheit wieder löschen End Select Next
Weitere Anpassungen sind problemlos möglich und das solltest du mittlerweile auch selbst hin bekommen können ;)Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Donnerstag, 17. Oktober 2013 20:32