Rubrik: Controls · TextBox & RichTextBox | VB-Versionen: VB2005, VB2008 | 15.06.09 |
MultiLine-TextBox zeilenmässig begrenzen Dieser Tipp zeigt, wie sich eine MultiLine-Textbox auf eine bestimmte Anzahl Zeilen (nicht Zeichen) begrenzen lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 12.402 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Ja, so eine MultiLine-TextBox ist schon etwas feines Da lässt sich doch richtig viel Text eingeben.
Was aber, wenn man nur eine ganz bestimmte maximale Anzahl Zeilen zulassen möchte?
In diesem Fall hilft uns wieder einmal die SendMessage-Funktion.
Mit Hilfe der SendMessage-Funktion lässt sich u.a. auch die aktuelle Anzahl der Zeilen einer TextBox ermitteln. Und mit diesem "Wissen" ist es doch ein leichtes, die TextBox entsprechend zeilenmässig zu begrenzen.
' benötigte API-Deklaration Private Declare Auto Function SendMessage Lib "user32" ( _ ByVal hWnd As IntPtr, _ ByVal wMsg As Integer, _ ByVal wParam As Integer, _ ByVal lParam As Integer) As Integer Private Const EM_GETLINECOUNT = &HBA
' Beispiel: Max. 3 Zeilen Private Const MAXLINES = 3
Private Sub TextBox1_KeyPress(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress ' Anzahl Zeilen ermitteln und prüfen Dim nLines As Integer = SendMessage(TextBox1.Handle, EM_GETLINECOUNT, -1, 0) If Asc(e.KeyChar) = 13 Then If nLines >= MAXLINES Then e.Handled = True Else If nLines > MAXLINES Then e.Handled = True End If End Sub