Rubrik: Controls · TextBox & RichTextBox | VB-Versionen: VB2005, VB2008 | 18.06.10 |
Bestimmte Zeile einer MultiLine-TextBox auslesen Diese kleine Funktion ermöglicht das gezielte Auslesen einer bestimmten Zeile einer MutliLine-TextBox. | ||
Autor: Dieter Otter | Bewertung: | Views: 18.388 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Die TextBox bietet standardmäßig für das Auslesen einer bestimmten Zeile die Lines-Eigenschaft:
' 1. Zeile auslesen Dim sLine As String = TextBox1.Lines(0)
Allerdings werden hier nur Zeilen mit harten Umbruchzeichen berücksichtigt. Wird der Text innerhalb der TextBox autom. umgebrochen, müssen wir auf das Windows API zurückgreifen:
' API-Deklaration Private Declare Function SendMessage Lib "user32.dll" _ Alias "SendMessageW" ( _ ByVal hWnd As IntPtr, _ ByVal wMsg As Integer, _ ByVal wParam As Integer, _ ByVal lParam As Integer) As Integer Private Const EM_FMTLINES = &HC8
''' <summary> ''' Ermittelt den Inhalt der angegebene Zeile aus einer MultiLine-TextBox ''' </summary> ''' <param name="oTextBox">TextBox-Control</param> ''' <param name="Line">Zeilennummern, beginnend mit 1</param> ''' <returns>Inhalt der Zeile</returns> Public Function TBGetLine(ByVal oTextBox As TextBox, ByVal Line As Integer) As String Dim sLine As String = "" ' autom. Umbrüche durch CR CR LF ersetzen SendMessage(oTextBox.Handle, EM_FMTLINES, 1, 0) ' Text temporär zwischenspeichern Try sLine = oTextBox.Text.Replace(vbCr, "").Split(vbLf)(Line - 1) Catch ex As Exception End Try ' eingefügte Umbrüche wieder rückgängig machen SendMessage(oTextBox.Handle, EM_FMTLINES, 0, 0) Return sLine End Function
Mit dieser Funktion lässt sich jetzt also eine bestimmte Zeile auslesen - und zwar unabhängig, ob der Zeilenumbruch via RETURN-Taste erfolgte oder autom. bei Erreichen des rechten Randes der TextBox.
' 5. Zeile Dim sLine As String = TBGetLine(TextBox1, 5)