Страница: 1 |
Страница: 1 |
Вопрос: TextBox & "конец строки и возврат каретки
Добавлено: 01.07.06 07:27
Автор вопроса: Sergey
Как сделать, чтобы имеющиеся в тексте
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #1
Добавлено: 01.07.06 07:50
Прошу прощения, имеется ввиду не TextBox, ListBox!
Номер ответа: 2
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #2
Добавлено: 01.07.06 10:02
А зачем это ты в листбоксе перевод строки используешь???
Номер ответа: 3
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #3
Добавлено: 01.07.06 10:09
Не специально. Листбокс заполняется строками уже имеющими перевод строки. Нужно в листбоксе либо оборвать строку, либо заменить либо заменить конец строки на пробел.
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 01.07.06 12:28
используй ф-ю Replace
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 01.07.06 14:39
либо можно так:
Dim arrayString() As String = testString.Split(New Char() {vbNewLine})
For Each line As String In arrayString
ListBox1.Items.Add(line.Trim)
Next
Номер ответа: 6
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 01.07.06 14:58
Ставишь DrawMode = OwnerDrawVarible
Далее обрабатываешь событие MeasureItem, в нем вычисляешь высоту элемента, учитывая переносы строк.
В событии DrawItem выполняешь собственно отрисовку элемента.
При этом у тебя элементы могут иметь разную высоту
Номер ответа: 7
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #7
Добавлено: 01.07.06 15:08
EROS, листбокс заполняется не методом Add, а установкой свойства DataSource. Попытался в таблице сделать вычисляемый столбец, но не удается определить число знаков, возвращаемых функцией SUBSTRING, т.к. поддерживаемой функции в 2003 нет.
Brand, с этим у меня напряг.
Да и не нужно отображать текст после переноса строки.
Номер ответа: 8
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #8
Добавлено: 01.07.06 15:29
Сори, что-то в fbe пропали два твоих сообщения, поэтмоу не точно понял вопрос.
Тогда через тот же Owner Draw (только ставишь уже OwnerDrawFixed) при отрисовке элемента так как тебе нужно обрабатываешь строку и выводишь на экране.
Номер ответа: 9
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #9
Добавлено: 02.07.06 18:39
Вот, что выходит:
lstList.DrawMode = DrawMode.OwnerDrawFixed
e.DrawBackground()
e.Graphics.DrawString(lstList.Items(e.Index)(1), e.Font, Brushes.Black, New RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
e.DrawFocusRectangle()
End Sub
Строка показывается до vbNewLine, но в выделенной строке не изменяется цвет шрифта. Посоветуйте, пожалуйста.
Номер ответа: 10
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 02.07.06 18:52
Вместо Brushes.Black используй New SolidBrush(e.ForeColor)
Можно кисти сделать глобальными, конечно.
И еще - как я вижу, у тебя отображается не первая строчка, а первый символ, надо обрезать первую строчку тебе наверное...
Номер ответа: 11
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #11
Добавлено: 02.07.06 20:28
Brand, спаибо! Все как надо.
Имеется ввиду
Это показывает значение из DisplayMember.
Номер ответа: 12
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #12
Добавлено: 02.07.06 20:33
Но я все равно не понял, почему с этим кодом перестают отображаться символы после vbNewLine