Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: TextBox & "конец строки и возврат каретки Добавлено: 01.07.06 07:27  

Автор вопроса:  Sergey
Как сделать, чтобы имеющиеся в тексте
chr(13)+ chr(10)
не отображались, а выполняли свою функцию?

Ответить

  Ответы Всего ответов: 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 testString As String = String.Format("Мама {0}моет {1}раму {2}мылом", vbNewLine, vbNewLine, vbNewLine)
        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
Вот, что выходит:
    Private Sub lstList_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles lstList.DrawItem
        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, спаибо! Все как надо.
у тебя отображается не первая строчка, а первый символ, надо обрезать первую строчку тебе наверное...

Имеется ввиду
lstList.Items(e.Index)(1)
?
Это показывает значение из DisplayMember.

Ответить

Номер ответа: 12
Автор ответа:
 Sergey



Вопросов: 15
Ответов: 55
 Профиль | | #12 Добавлено: 02.07.06 20:33
Но я все равно не понял, почему с этим кодом перестают отображаться символы после vbNewLine :(

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам