VB.Net Tool TextBox Zeichen je Zeile begrenzen

  • VB.NET

Es gibt 41 Antworten in diesem Thema. Der letzte Beitrag () ist von Naifu.

    VB.Net Tool TextBox Zeichen je Zeile begrenzen

    hallo zusammen,

    wie der Titel schon sagt, möchte ich die Zeichenanzahl in einer TextBox je Zeile begrenzen.Hat da jemand vlt eine Lösung parat?
    ?( ?( ?(
    Gruß Matze 8-)
    Die Frage ist auch, was heißt "begrenzen"? Automatischer Zeilenumbruch oder Verhindern weiterer Eingaben?

    So oder so, hier 2 mögliche Ansätze:
    social.msdn.microsoft.com/Foru…rms-vbnet?forum=vbgeneral
    social.msdn.microsoft.com/Foru…-per-line?forum=vbgeneral
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    ich wurde gern die Eingabe ab einer bestimmten Zeichen Anzahl blockieren und den Nutzer zur Eingabe in der nächsten Zeile zwingen.
    Bei einem weichen Zeilenumbrunch wird die Eingabe nicht als String der nächsten Line übernommen, sondern es wird beim Ausdruck einfach abgebrochen.
    Ich geb eich einfach mal meinen Code, dass ihr seht wo ich stehe.

    VB.NET-Quellcode

    1. ​Public Class Form1
    2. Private Const V As String = "http_requester/0.1"
    3. Private Sub PSRetTool_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. Me.BackColor = Color.FromArgb(0, 204, 204)
    5. Txt_IP.Text = Environment.GetEnvironmentVariable("LabelPrintMessi", 1)
    6. End Sub
    7. Private Sub Btn_Exit_Click(sender As Object, e As EventArgs) Handles Btn_Exit.Click
    8. Me.Close()
    9. End Sub
    10. Private Sub PictureBox1_MouseHover(sender As Object, e As EventArgs) Handles PictureBox1.MouseHover
    11. Dim tt As New ToolTip()
    12. tt.SetToolTip(PictureBox1, "matze......com")
    13. End Sub
    14. Private Sub Chk_MostTop_CheckedChanged(sender As Object, e As EventArgs) Handles Chk_MostTop.CheckedChanged
    15. If Chk_MostTop.Checked = True Then
    16. Me.TopMost = True
    17. Else
    18. Me.TopMost = False
    19. End If
    20. End Sub
    21. Private Sub Btn_Save_Click(sender As Object, e As EventArgs) Handles Btn_Save.Click
    22. Environment.SetEnvironmentVariable("LabelPrintMessi", Txt_IP.Text, 1)
    23. End Sub
    24. Private Sub Btn_print_Click(sender As Object, e As EventArgs) Handles Btn_print.Click
    25. Call Replacer()
    26. Call Drucken()
    27. TXT_Case.Clear()
    28. TXT_Order.Clear()
    29. TXT_Shipping.Clear()
    30. TXT_Kommentar.Clear()
    31. TXT_EAN.Clear()
    32. TXT_QL.Clear()
    33. End Sub
    34. Sub Replacer()
    35. TXT_Kommentar.Text = TXT_Kommentar.Text.Replace("Ä", "Ae")
    36. TXT_Kommentar.Text = TXT_Kommentar.Text.Replace("ä", "ae")
    37. TXT_Kommentar.Text = TXT_Kommentar.Text.Replace("Ö", "Oe")
    38. TXT_Kommentar.Text = TXT_Kommentar.Text.Replace("ö", "oe")
    39. TXT_Kommentar.Text = TXT_Kommentar.Text.Replace("Ü", "Ue")
    40. TXT_Kommentar.Text = TXT_Kommentar.Text.Replace("ü", "ue")
    41. TXT_Kommentar.Text = TXT_Kommentar.Text.Replace("ß", "ss")
    42. End Sub
    43. Sub Drucken()
    44. Dim url As String
    45. Dim zpl As String
    46. Dim lines() As String
    47. 'lines = RTBComment.Text.Split(Environment.NewLine)
    48. zpl = "^XA^PW1000^CFB,40,20"
    49. If TXT_Case.Text <> "" Then zpl += "^FO150,100^BY3^BCN,80,N,N^FD" & TXT_Case.Text & "^FS^FO330,200^FD" & TXT_Case.Text & "^FS"
    50. If TXT_Order.Text <> "" Then zpl += "^FO150,300^BY3^BCN,80,N,N^FD" & TXT_Order.Text & "^FS^FO330,400^FD" & TXT_Order.Text & "^FS"
    51. If TXT_Shipping.Text <> "" Then zpl += "^FO150,500^BY3^BCN,80,N,N^FD" & TXT_Shipping.Text & "^FS^FO330,600^FD" & TXT_Shipping.Text & "^FS"
    52. If TXT_EAN.Text <> "" Then zpl += "^FO150,1900^BY3^BCN,80,N,N^FD" & TXT_EAN.Text & "^FS^FO330,2000^FD" & TXT_EAN.Text & "^FS"
    53. If TXT_QL.Text <> "" Then zpl += "^FO150,2100^BY3^BCN,80,N,N^FD" & TXT_QL.Text & "^FS^FO330,2200^FD" & TXT_QL.Text & "^FS"
    54. zpl += "^CFc,50,30"
    55. If TXT_Kommentar.Lines.Length >= 1 Then zpl += "^FO10,770^FD" & TXT_Kommentar.Lines(0) & "^FS"
    56. If TXT_Kommentar.Lines.Length >= 2 Then zpl += "^FO10,830^FD" & TXT_Kommentar.Lines(1) & "^FS"
    57. If TXT_Kommentar.Lines.Length >= 3 Then zpl += "^FO10,890^FD" & TXT_Kommentar.Lines(2) & "^FS"
    58. If TXT_Kommentar.Lines.Length >= 4 Then zpl += "^FO10,950^FD" & TXT_Kommentar.Lines(3) & "^FS"
    59. If TXT_Kommentar.Lines.Length >= 5 Then zpl += "^FO10,1010^FD" & TXT_Kommentar.Lines(4) & "^FS"
    60. If TXT_Kommentar.Lines.Length >= 6 Then zpl += "^FO10,1070^FD" & TXT_Kommentar.Lines(5) & "^FS"
    61. If TXT_Kommentar.Lines.Length >= 7 Then zpl += "^FO10,1130^FD" & TXT_Kommentar.Lines(6) & "^FS"
    62. If TXT_Kommentar.Lines.Length >= 8 Then zpl += "^FO10,1190^FD" & TXT_Kommentar.Lines(7) & "^FS"
    63. If TXT_Kommentar.Lines.Length >= 9 Then zpl += "^FO10,1250^FD" & TXT_Kommentar.Lines(8) & "^FS"
    64. If TXT_Kommentar.Lines.Length >= 10 Then zpl += "^FO10,1310^FD" & TXT_Kommentar.Lines(9) & "^FS"
    65. If TXT_Kommentar.Lines.Length >= 11 Then zpl += "^FO10,1370^FD" & TXT_Kommentar.Lines(10) & "^FS"
    66. If TXT_Kommentar.Lines.Length >= 12 Then zpl += "^FO10,1430^FD" & TXT_Kommentar.Lines(11) & "^FS"
    67. If TXT_Kommentar.Lines.Length >= 13 Then zpl += "^FO10,1490^FD" & TXT_Kommentar.Lines(12) & "^FS"
    68. If TXT_Kommentar.Lines.Length >= 14 Then zpl += "^FO10,1550^FD" & TXT_Kommentar.Lines(13) & "^FS"
    69. If TXT_Kommentar.Lines.Length >= 15 Then zpl += "^FO10,1610^FD" & TXT_Kommentar.Lines(14) & "^FS"
    70. zpl += "^CFB,40,20" &
    71. "^FO10,200^FDcase no.^FS" &
    72. "^FO10,400^FDorder no.^FS" &
    73. "^FO10,600^FDshipping no.^FS" &
    74. "^FO10,2000^FDEAN^FS" &
    75. "^FO10,2200^FDQL^FS" &
    76. "^FO1,750^GB980,930,5^FS" &
    77. "^FO20,700^CFB,40,30^FDcomment^FS" &
    78. "^XZ"
    79. 'url = "http://" & Txt_IP.Text & "/pstprnt"
    80. 'WRequest(url, "POST", zpl)
    81. Debug.Print(zpl)
    82. End Sub
    83. Shared Function WRequest(URL As String,
    84. method As String,
    85. POSTdata As String) As String
    86. Dim responseData As String = ""
    87. Dim cookieJar As New Net.CookieContainer()
    88. Dim hwrequest As HttpWebRequest = WebRequest.Create(URL)
    89. hwrequest.CookieContainer = cookieJar
    90. hwrequest.Accept = "*/*"
    91. hwrequest.AllowAutoRedirect = True
    92. hwrequest.UserAgent = V
    93. hwrequest.Timeout = 60000
    94. hwrequest.Method = method
    95. If hwrequest.Method = "POST" Then
    96. hwrequest.ContentType = "application/x-www-form-urlencoded"
    97. Dim encoding As New Text.ASCIIEncoding()
    98. Dim postByteArray() As Byte = encoding.GetBytes(POSTdata)
    99. hwrequest.ContentLength = postByteArray.Length
    100. Dim postStream As IO.Stream = hwrequest.GetRequestStream()
    101. postStream.Write(postByteArray, 0, postByteArray.Length)
    102. postStream.Close()
    103. End If
    104. Dim hwresponse As Net.HttpWebResponse = hwrequest.GetResponse()
    105. If hwresponse.StatusCode = Net.HttpStatusCode.OK Then
    106. Using responseStream As New StreamReader(hwresponse.GetResponseStream())
    107. responseData = responseStream.ReadToEnd()
    108. End Using
    109. End If
    110. hwresponse.Close()
    111. Return responseData
    112. End Function
    113. Private Sub TXT_Kommentar_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
    114. 'Zeilenzahl im Kommentarfeld begrenzen
    115. If e.KeyChar = vbCr Then
    116. 'If RTBComment.Lines.Length = 15 Then
    117. If TXT_Kommentar.Lines.Length = 5 Then
    118. e.Handled = True
    119. End If
    120. End If
    121. End Sub
    122. End Class
    Gruß Matze 8-)
    Probier mal:

    VB.NET-Quellcode

    1. Private Const charMax As Integer = 3
    2. Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
    3. Dim tb As TextBox = DirectCast(sender, TextBox)
    4. With tb
    5. If .Multiline Then
    6. For Each line As String In .Lines
    7. If line.Length > charMax Then
    8. .Text = .Text.Insert(.Text.Length - 1, vbCrLf)
    9. .SelectionStart = .TextLength
    10. End If
    11. Next
    12. End If
    13. End With
    14. End Sub
    Na, probieren wir es aus:

    VB.NET-Quellcode

    1. Private Const charMax As Integer = 3
    2. Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
    3. TextLength(DirectCast(sender, TextBoxBase))
    4. 'Dim tb As TextBox = DirectCast(sender, TextBox)
    5. 'With tb
    6. ' If .Multiline Then
    7. ' For Each line As String In .Lines
    8. ' If line.Length > charMax Then
    9. ' .Text = .Text.Insert(.Text.Length - 1, vbCrLf)
    10. ' .SelectionStart = .TextLength
    11. ' End If
    12. ' Next
    13. ' End If
    14. 'End With
    15. End Sub
    16. Private Sub RichTextBox1_KeyUp(sender As Object, e As EventArgs) Handles RichTextBox1.KeyUp
    17. TextLength(DirectCast(sender, TextBoxBase))
    18. 'Dim tb As RichTextBox = DirectCast(sender, RichTextBox)
    19. 'With tb
    20. ' If .Multiline Then
    21. ' For Each line As String In .Lines
    22. ' If line.Length > charMax Then
    23. ' .Text = .Text.Insert(.Text.Length - 1, vbCrLf)
    24. ' .SelectionStart = .TextLength
    25. ' End If
    26. ' Next
    27. ' End If
    28. 'End With
    29. End Sub
    30. Private Sub TextLength(tbb As TextBoxBase)
    31. With tbb
    32. If .Multiline Then
    33. For Each line As String In .Lines
    34. If line.Length > charMax Then
    35. .Text = .Text.Insert(.Text.Length - 1, vbCrLf)
    36. .SelectionStart = .TextLength
    37. End If
    38. Next
    39. End If
    40. End With
    41. End Sub
    ich habe doch noch ein Problem, wenn ich per copy paste etwas einfüge

    z.B.
    Stępień Potok Górny 89
    3-423 Potok Górny
    PL

    dann wird mir das PL getrennt in mehreren Zeilen dargestellt

    P

    L

    und auch änderungen sind nicht möglich, nach copy & paste

    @Naifu hast du da vlt eine Lösung?
    Gruß Matze 8-)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „matze.tele“ ()

    Quasi-Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed

    Ich bin ganz schlecht im Würmer aus der Nase ziehen, also, was verstehst du nicht?

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

    VB.NET-Quellcode

    1. With tbb
    2. If .Multiline Then
    3. For Each line As String In .Lines
    4. If line.Length > charMax Then
    5. .Text = .Text.Insert(.Text.Length - 1, vbCrLf)
    6. .SelectionStart = .TextLength
    7. End If
    8. Next
    9. End If
    10. End With


    hier ist mir klar, dass die zeichenanzahl mit der vorgegebenen zahl verglichen wird und wenn sie größer ist dann ... ??? und das für jede zeile,
    aber was mit dem text passiert, leuchtet mir nicht ein.
    Gruß Matze 8-)
    OK, setzt mal einen Breakpoint auf "With tbb".
    Starte das Prog, paste deinen Text rein.
    Wenn das Programm stoppt, dann eine Überwachung für "tbb.Lines" und für "tbb.Text" einfügen.
    Debugge Zeile für Zeile und beobachte was in de Überwachungen geschiet. ;)
    NameWertTyp
    Lines error BC30451: "Lines" wurde nicht deklariert. Aufgrund der Schutzstufe ist unter Umständen kein Zugriff möglich.


    NameWertTyp
    Text "PSRet-Tool" String

    da werd ich nicht schlau draus

    den Haltepunkt hab ich, aber die Überwachung klappt wohl nicht richtig, sry
    ich sehe nicht, dass da irgendetwas passiert. :(
    ich habe die Überwachung bisher nicht benutzt.
    Gruß Matze 8-)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „matze.tele“ ()

    matze.tele schrieb:

    ich habe die Überwachung bisher nicht benutzt

    Ups, dann wast du im Blindflug unterwegs, so sollte das aussehen:
    Bilder
    • Unbenannt.PNG

      39,68 kB, 982×617, 92 mal angesehen
    ich Danke dir für deine Gedult und vor allem für die Hilfe, aber ich komme nicht weiter.

    bei mir wird nur (0) und (1) bei tbb.Lines angezeigt, wobei (0) bis "P" geht und (1) nur "L"
    {Length=2}
    Gruß Matze 8-)