Переход на новую строку в texbox после запятой

ekety

Помогите советом. Есть textbox, в него загружается из CheckedListBox текст через запятую: Вася, Петя, Коля.Дима. Необходимо чтобы текст в textbox после загрузки выглядел так: Вася, Петя, Коля, Дима. То есть после запятой переносился на новую строку именно в самом textbox. Возможно ли это?
11 ответов

ekety

ekety, может пройтись по строкам и "запятую" заменить на "запятую и vbNewLine"?


ekety

А можно поподробнее.Разобрался спасибо:
TextBox1.Text = Replace(TextBox1.Text, ",", vbCrLf)


ekety

может пройтись по строкам и "запятую" заменить на "запятую и vbNewLine"
Дядя Корней, там еще пробелы.Можно так:
        TextBox1.Text = "Вася, Петя, Коля, Дима."
        TextBox1.Text = String.Join(vbCrLf, From i As String In TextBox1.Text.Split(" "c) _
                                            Let ii = i.Trim _
                                            Where ii.Length > 0
                                            Select ii)


ekety

Спасибо за ответ. Есть еще вопрос: как заменить последний символ в текстбоксе? В текстбоке программно записывается текст (записывается с последующим добавлением) : Вася, Петя, Лиза, Нужно заменить последнюю запятую на точку.


ekety

как заменить последний символ в текстбоксе?
Наверно, не самый хороший вариант, но ничего другого не придумывается:
TextBox1.Select(TextBox1.TextLength - 1, 1)
        TextBox1.SelectedText = "."c


ekety

Не работает: InvalidArgument=Значение '-1' недопустимо для 'start'.


ekety

...как заменить последний символ в текстбоксе?
Если меня старика не подводит память, то у текстбокса есть свойство line. Можно получить номер последней строки и уже конкретно в ней произвести замену "запятой" на "тчк".


ekety

InvalidArgument=Значение '-1' недопустимо для 'start'.
Это потому, что TextBox был пустым.
        If TextBox1.TextLength > 0 Then
            TextBox1.Select(TextBox1.TextLength - 1, 1)
            TextBox1.SelectedText = "."c
        End If


ekety

Вообще в идеале было бы неплохо найти последнюю запятую в тексте и заменить ее на точку. Пробовал путем удаления последнего символа а потом прописывал точку, но при таком подходе если пользователь допишет текс вручную и забудет оставить точку или запятую, стирается последняя буква слова.
 If TextBox2.TextLength < 1 Then
 
        Else
 
            TextBox2.Text = TextBox2.Text.Substring(0, TextBox2.Text.Length - 1)
            TextBox2.Text = TextBox2.Text & "."
 
        End If
Не совсем то что нужно.


ekety

в идеале было бы неплохо найти последнюю запятую в тексте и заменить ее на точку
Попробуйте:
        If TextBox1.TextLength > 0 Then
            If TextBox1.Text.LastIndexOf(","c) = TextBox1.TextLength - 1 Then
                TextBox1.Select(TextBox1.TextLength - 1, 1)
                TextBox1.SelectedText = "."c
            End If
        End If


ekety

Спасибо большое. Ваш код работает в таком виде:
If TextBox2.TextLength < 1 Then
 
        Else
 
            If TextBox2.Text.LastIndexOf(","c) = TextBox2.TextLength - 1 Then
                TextBox2.Select(TextBox2.TextLength - 1, 1)
                TextBox2.SelectedText = "."c
            End If
 
        End If
В оригинале ругается