在Win32 API中有EM_FMTLINES
消息。如果您將此消息發送到TextBox
控件,則其Text
屬性將包含軟換行符。軟分行符是CrCrLf
個字符的組合,用於標記由於換行而導致分行損壞的地方。
這裏是例如簡單的擴展模塊的:
Module TextBoxExtension
Private Const EM_FMTLINES As UInteger = &HC8
<DllImport("user32.dll", CharSet:=CharSet.Auto)>
Private Function SendMessage(hWnd As IntPtr, Msg As UInteger, wParam As Integer, lParam As IntPtr) As IntPtr
End Function
<Extension()>
Public Function GetWrappedText(ByVal textBox As TextBox) As String
Dim handle = textBox.Handle
SendMessage(handle, EM_FMTLINES, 1, IntPtr.Zero)
GetWrappedText = textBox.Text
SendMessage(handle, EM_FMTLINES, 0, IntPtr.Zero)
End Function
End Module
MemoEdit
類是框保持TextBoxMaskBox
類的實例。 TextBoxMaskBox
類繼承自System.Windows.Forms.TextBox
類。你可以從MemoEdit.MaskBox
屬性中獲得。
Dim text = MemoEdit1.MaskBox.GetWrappedText
現在你可以通過使用String.Split
方法得到線:
Dim lines = text.Split({vbCr & vbCrLf, vbCrLf, vbLf}, StringSplitOptions.None)