![>](style_images/1/nav_m.gif)
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.16.203.107] |
![]() |
|
Сообщ.
#1
,
|
|
|
Странная проблема появилась.
Есть текст бокс на форме приложения для мобильного устройства. Собираю нужную мне строку, которая содержит переводы строк. Примерно так: ![]() ![]() while (prev != null) { if (!prev.IsTemperatureNull()) sb.Insert(0, String.Format("Temperature: {0} F{1}{1}", prev.Temperature, Environment.NewLine)); sb.Insert(0, GetQuestionTextForCoolingCategory(prev)); prev = DataContext.Current.GetPrevQuestion(prev, GetNextPrevQuestionMode.InGroup); } sb.Append(GetQuestionTextForCoolingCategory(lastQuestionRow)); if (!lastQuestionRow.IsTemperatureNull()) sb.AppendFormat("Temperature: {0} F{1}{1}", lastQuestionRow.Temperature, Environment.NewLine); lastQuestionRow.Comments = lastQuestionRow.IsCommentsNull() ? sb.ToString() : String.Format("{0}{1}--{1}{2}", sb, Environment.NewLine, lastQuestionRow.Comments); ******* _currentComment = DataContext.Current.QuestionRow.Comments; ******* notesTextBox.Text = _currentComment; Все работает отлично. В текстбоксе находится строка с переводом строк. Потом приложение передает эту строку на сервер. Потом приложение получает эту же строку с сервера. И при простом присвоении этой строки: ![]() ![]() _currentComment = DataContext.Current.QuestionRow.Comments; notesTextBox.Text = _currentComment; В тектстбоксе находится одна строка с квадратиками вместо перевода строк. Причем на каждый перевод строки приходится _один_ квадратик. Полученная строка, которая находится в _currentComment перед присвоением текстбоксу, под отладчиком выглядит правильно. В ней находятся все '\r\n' в нужных местах. Если же перед пресвоением текстбоксу "пересобрать строку" примерно так: ![]() ![]() var lines = _currentComment.Replace(Environment.NewLine, "\n").Split('\n'); var sb = new StringBuilder(_currentComment.Length * 2); foreach (var line in lines) { if (sb.Length > 0) sb.Append(Environment.NewLine); sb.Append(line); } notesTextBox.Text = sb.ToString(); То все отображается правльно. В чем проблема? Как это это лечится нормальными средствами, без извращений? Мультилайн у текстбокса стоит... естетственно... AcceptsReturn тоже... хотя я его по всякому пробовал. Почему пропадет только один символ? (квадратик то один, значит один правильно обрабатывается) Кто может сталкивался? |
Сообщ.
#2
,
|
|
|
Думаю, надо смотреть, что на сервере происходит...
|
Сообщ.
#3
,
|
|
|
Я смотрел. Ничего не увидел особенного. Возвращается обычная строка. С обычными \r\n. Если из под отладчика ее скопировать в любой текстовый редактор, то все отображается как положено с переносами.
Что именно нужно посмотреть? |
Сообщ.
#4
,
|
|
|
А как она возвращается ? Возможно метод, который это делает, как-то преобразует спец. символы.
|
Сообщ.
#5
,
|
|
|
Цитата IL_Agent @ А как она возвращается ? WCF сервис возвращает XML. Строка - значение одного из элементов. Потом этот XML грузится в датасет. Потом из датасета я ее беру и присваюваю текстбоксу. Цитата IL_Agent @ Возможно метод, который это делает, как-то преобразует спец. символы. Ну например как? Я же говорю, что смотрю под отладчиком, все наместе. Смотрю я преям перед самым присвоением тестбоксу. Т.е. уже на клиенте и уже ничего с ней потом не происходит. Кстати, забыл упомянуть, что если эту строку из под отлачика скопировать в текстовый редактор (пробовал np и np++), то все отображается правильно. И еще, на эмуляторах тоже все отображается правильно. Проблема только на реальных устройствах. |