Automatisch Enter-Taste in Multiline-Textbox

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von peggy.denis.

    Automatisch Enter-Taste in Multiline-Textbox

    Hallo,

    kann ich in einer Multiline-Textbox als Beispiel immer nach 50 Zeichen die Funktion der Entertaste automatisch übernehmen. Muss der Code dann im KEYUP-Ereigniss der entsprechenden Textbox stehen.
    OK Vielen Dank für den Hinweis des Key-Ereignisses.
    Meine Frage war?

    In einer Textbox im Multiline Format wenn man dort schreibt und der Cursor ans Ende kommt wechselt er ja in eine neue Zeile. Tatsächlich ist es aber keine Neue Zeile sondern nur eine Formatbedingte verlängerte erste Zeile nach unten. Wenn ich die Enter-Taste drücke erreiche ich das ich in neue Zeilen Weiterschreibe. kann man gut testen wenn man geschriebenen Text im HTML-Format anzeigt.

    Ich möchte nun das man im Code hinterlegt das als Beispiel nach 50 Zeichen eine Entertaste folgt auch durch den Code verursacht nicht durch den Anwender.
    Hallo, versuch´s mal so:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private AnzahlZeichen As Integer
    3. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    4. AnzahlZeichen = 50
    5. End Sub
    6. Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    7. If Me.TextBox1.TextLength = AnzahlZeichen Then
    8. TextBox1.Text = TextBox1.Text & ControlChars.NewLine
    9. TextBox1.SelectionStart = TextBox1.TextLength
    10. AnzahlZeichen = (TextBox1.TextLength + 50)
    11. End If
    12. End Sub
    13. End Class
    Hallo

    Da musst Du auf die API SendMessage zurückgreifen.
    Die Microsoft.VisualBasic.Replace() Funktion benutze ich weil die TextBox1.Text.Replace() Funktion nur einen Char erkennen kann.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Declare Function SendMessage Lib "user32.dll" _
    3. Alias "SendMessageW" ( _
    4. ByVal hWnd As IntPtr, _
    5. ByVal wMsg As Integer, _
    6. ByVal wParam As Integer, _
    7. ByVal lParam As Integer) As Integer
    8. Private Const EM_FMTLINES = &HC8
    9. Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
    10. SendMessage(TextBox1.Handle, EM_FMTLINES, 1, 0)
    11. TextBox1.Text = Microsoft.VisualBasic.Replace(TextBox1.Text, vbCr & vbCr, vbCr)
    12. TextBox1.SelectionStart = TextBox1.TextLength
    13. End Sub
    14. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    15. MsgBox(TextBox1.Text)
    16. End Sub
    17. End Class