none
Commands erstellen RRS feed

  • 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.

    Donnerstag, 3. Oktober 2013 16:58

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.


    Donnerstag, 3. Oktober 2013 18:30
    Moderator
  • 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.

    Freitag, 4. Oktober 2013 12:53
    Moderator

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.


    Donnerstag, 3. Oktober 2013 18:30
    Moderator
  • Super es klappt aber kann mann das auch so machen dass mann mehrere solcher Dinge in eine Textbox dann schreibt also z.B.

    d 3 s 4 usw.

    Freitag, 4. Oktober 2013 12:25
  • 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.

    Freitag, 4. Oktober 2013 12:53
    Moderator