VB Как заставить новую строку в текстовом поле после переноса слов? - PullRequest
0 голосов
/ 26 октября 2018

В Visual Basic при наборе текста в многострочном текстовом поле (wordwrap = true).При достижении конца текстового поля (ширина).Это автоматически заставляет новую строку.Тем не менее, похоже, что он добавил (vbnewline). Но это не так.

Вопрос: как заставить форсировать vbnewline при достижении переноса слов?По простому, почему.

Спасибо

1 Ответ

0 голосов
/ 26 октября 2018

Поскольку вы упомянули установку свойства WordWrap, я буду предполагать, что вы используете WinForm TextBox Control .Этот элемент управления является оболочкой для собственного элемента управления EDIT.Собственный элемент управления поддерживает разрывы мягких строк, которые вставляются как два возврата каретки и перевод строки при переносе текста.

Эту функцию можно включить, отправив элементу управления EM_FMTLINES .

Const EM_FMTLINES As Int32 = &HC8
Const softLineBreak As String = ChrW(13) & ChrW(13) & ChrW(10)

<DllImport("user32.dll", CharSet:=CharSet.Auto)>
Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As Boolean, ByVal lParam As IntPtr) As IntPtr
End Function

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    SendMessage(TextBox1.Handle, EM_FMTLINES, True, IntPtr.Zero)
End Sub

Вы можете просто заменить последовательность символов разрывов мягкой строки на Environment.Newline, чтобы преобразовать их в разрывы жестких строк.

Dim textWithHardBreaks As String = TextBox1.Text.Replace(softLineBreak, Environment.NewLine)
...