В.Б. Как заставить новую строку в текстовом поле после переноса слов?

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

Вопрос в следующем: как заставить vbnewline, когда был достигнут перенос слов. Просто почему.

Спасибо

Конечно, дело не в этом. Все дело в том, что элемент управления оборачивает текст там, где требуется, чтобы показать все это, не затрагивая сам текст. Если это повлияло на текст, то оно не могло автоматически перекомпоноваться, если и когда размер TextBox был изменен. У меня нет специального кода для вставки разрыва строки, и я не собираюсь разрабатывать его за вас, но вам следует взглянуть на метод GetLineFromCharIndex. Это позволит вам определить, когда текст перенесен на следующую строку. Если вы сделаете искреннюю попытку, и она не сработает, мы можем поговорить дальше.

jmcilhinney 26.10.2018 01:23

Весь смысл включения переноса слов состоит в том, чтобы нет требовал новой строки в конце каждой строки, но чтобы текст автоматически переносился по размеру элемента управления редактированием. Если вы не хотите такого поведения, отключите перенос слов.

Ken White 26.10.2018 01:24

Конечно, вы уже должны знать об этом методе GetLineFromCharIndex, потому что самое первое, что вы должны были сделать, когда вам нужна была помощь в выполнении чего-либо с TextBox, - это открыть справочную документацию для класса TextBox и посмотреть, какие члены у него есть и что они делать. Именно так я знаю об этом методе.

jmcilhinney 26.10.2018 01:25

Это частый вопрос, и ни у кого нет на него ответа. Я понимаю, для чего это сделано, они должны были добавить возможность принудительно перенести строку при переносе.

Mark Ismail 26.10.2018 01:28

Думаю, должно. И мне нравится, как люди комментируют, я мог бы это сделать, но не хочу. Каждый раз я читаю вопрос. И люблю, когда люди комментируют как бессмысленный вопрос. Поскольку вопрос слишком тупой для вас, не понимая, для чего он нам нужен. Если у вас нет ответа или вы не хотите отвечать. Почему ты здесь. Я найду и опубликую ответ для тех, кому это нужно.

Mark Ismail 26.10.2018 01:40

Если вы думаете, что в программировании есть правильное и неправильное, вы никогда не добьетесь успеха в жизни. Вы всегда будете сотрудником, ожидающим передачи вам протокола. Есть кое-что, называемое УЧАСТИЕ В РАБОТЕ, несмотря ни на что. Вот почему есть программисты, которые умеют что-то создавать, но никогда не делают. Потому что они застряли в протоколах, созданных обычными людьми. Забавно, ни у кого нет ответа. Тем не менее, у людей есть время для комментариев. Если вы не хотите отвечать, не комментируйте. Просто двигаться дальше. Это мой вопрос, я отвечу на него. И продолжайте в том же духе.

Mark Ismail 26.10.2018 02:23

Измерьте длину текста (и я не имею в виду длину символа с text.length), затем вставьте новую строку в нужное место (в зависимости от ширины текстового поля).

CruleD 26.10.2018 02:39

Если вы хотите добавить свои собственные символы новой строки, я бы предложил вместо этого использовать RichTextBox.

David Wilson 26.10.2018 09:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
8
812
1

Ответы 1

Поскольку вы упомянули установку свойства WordWrap, я предполагаю, что вы используете Элемент управления WinForm TextBox. Этот элемент управления является оболочкой для собственного элемента управления 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)

Ты гений. Большое спасибо. Вы сэкономили мне много времени. Вот что такое stackoverflow. Помогаем людям экономить время и делимся знаниями. Продолжайте хорошую работу. Все дело в одном человеке, который может иметь значение. Еще раз спасибо.

Mark Ismail 26.10.2018 04:38

Я искал это больше года. Вы сделали мой день. Просто сделано. Еще раз спасибо.

Mark Ismail 26.10.2018 04:45

Другие вопросы по теме