Textbox splitten und noch etwas

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Textbox splitten und noch etwas

    moin,


    folgendes Problem:

    Ich habe eine Textbox und mit diesen Code habe ich schon die Maximalanzahl an zeichen eingestellt

    VB.NET-Quellcode

    1. Dim zeichenanzahl As Integer = TextBox7.Text.Count
    2. If zeichenanzahl > 2 Then
    3. TextBox8.Focus()
    4. End If

    Ich möchte nun aber erreichen, dass wenn ich z.B. in textbox7 525|467 eingebe( eine Koordinate), dass dieses Zeichen: | gelöscht wird und die letzten 3 Ziffern in textbox8 eingefügt werden.
    Per Suchfunktion habe ich noch diesen Code gefunden :

    VB.NET-Quellcode

    1. Textbox1.Text=left(Textbox1.Text,len(Textbox1.Text)-2)

    jedoch verstehe ich den nicht ganz :)
    lg dogu
    @Dogu46
    Stichwort ist .Split() und optional ein paar Stringfunktionen...
    Schau mal:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Point
    3. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    4. If TextBox1.Text.Length >= 7 Then 'Wenn die TextLänge größer oder geich 7 ist
    5. If TextBox1.Text.Contains("|") Then
    6. Dim a() As String = TextBox1.Text.Split(CChar("|")) 'Spliite den Text in TextBox1 am Zeichen "|"
    7. TextBox1.Text = a(0) 'Weise textBox1 den ersten teil davon zu
    8. TextBox2.Text = a(1) 'und TextBox2 den zweiten
    9. MessageBox.Show("Done !")
    10. End If
    11. End If
    12. End Sub
    13. End Class
    wow. Danke für die schnelle Antwort ich werde es gleich mal ausprobieren jedoch weis ich nicht was das hier bringt:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Point
    wenn du das mir erklären könntest wäre es nett :)



    lg dogu

    ps: sorry bin echt noch ein großer Anfänger^^
    Das klappt so ;)
    Zitat von RodFromGermany:
    Option Strict On
    sorgt für eine Typprüfung bei der Eingabe
    txt = Wert (String = Integer) wird dadurch z.B. verboten
    Option Strict Off
    würde automatisch im Hintergrund
    txt = Wert.ToString draus machen.
    Arbeite mit Option Strict On

    Es sorgt einfach gesagt dafür dass du nicht sagst ich habe 2 Früchte, sondern ich habe einen Apfel und eine Banane.
    ok danke


    wenn ich aber option stricht on und
    public class point mit reinnehme kommen bei meinen ganzen anderen code viele fehler(arbeite mit vielen coordinaten und x,y punkten von der maus usw.)
    aber ohne das gehts nicht^^

    edit:
    ich habe nun das gemacht:

    VB.NET-Quellcode

    1. Private Sub TextBox7_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox7.KeyPress
    2. If Not "1234567890".Contains(e.KeyChar) And Not (e.KeyChar = Chr(8)) Then
    3. e.Handled = True
    4. TextBox8.Focus()
    5. End If
    6. End Sub


    und es geht auch eigl nur wenn ich jetzt z.B. 500|666 direkt in die erste textbox einfüge dann springt der zur 2. aber beide sind leer
    also ich muss irgendwie hin kriegen ,dass er die ersten 3 ziffern in die erste textbox splittet, die letzten 3 in die 2. und , dass er "|" löscht
    nur weis ich leider nicht wie man das macht. Kann mir jm vll einige tipps bzw. hilfe geben?

    lg dogu

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dogu46“ ()

    Gib mal auf der Startseite oben rechts im Suche-Fenster MaskedTextBox ein. Da hab ich 190 Treffer, da findest Du alle Deine Fragen beantwortet.
    Alternativ frag die MSDN oder Frau Google.
    Ein wenig Eigeninitiative ist nicht schlecht. :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hier wird die Syntax der Maske beschrieben: MSDN.
    Probier mal z.B. mit MaskedTextBox1.Mask = "000:000:000" (lässt nur Ziffern zu)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    komme mit der irgendwie nicht zurecht aber ich bin nun soweit:

    also die Theorie nochmal:

    ich gebe in textbox7 mit der Kombination strg+v 500|600 ein.
    Nun muss er die 500 in textbox7 stehen lassen sprich die ersten 3 ziffern und die letzten 3 ziffern nach textbox8 verschieben und danach muss er | löschen.
    Gibt es eine Möglichkeit damit er genau die letzten 3 Ziffern verschiebt?

    lg dogu

    Dogu46 schrieb:

    strg+v
    Ist das so unwichtig, dass Du es nicht in die Frage geschrieben hast?
    Im TextChanged-Event der TextBox siehst Du nach, ob der gesamte Text drin ist.
    Dann splittest Du den Text an "|" und schreibst den Index-0-Part in die eine, den Index-1-Part in die andere TextBox.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!