На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU
  
> TextBox и строка с "переовдом строк" , .Net CF 3.5, WM5, WM6
    Странная проблема появилась.

    Есть текст бокс на форме приложения для мобильного устройства.

    Собираю нужную мне строку, которая содержит переводы строк. Примерно так:
    ExpandedWrap disabled
                      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;


    Все работает отлично. В текстбоксе находится строка с переводом строк.
    Потом приложение передает эту строку на сервер.
    Потом приложение получает эту же строку с сервера.

    И при простом присвоении этой строки:
    ExpandedWrap disabled
                  _currentComment = DataContext.Current.QuestionRow.Comments;
                  notesTextBox.Text = _currentComment;


    В тектстбоксе находится одна строка с квадратиками вместо перевода строк. Причем на каждый перевод строки приходится _один_ квадратик.

    Полученная строка, которая находится в _currentComment перед присвоением текстбоксу, под отладчиком выглядит правильно. В ней находятся все '\r\n' в нужных местах.

    Если же перед пресвоением текстбоксу "пересобрать строку" примерно так:

    ExpandedWrap disabled
                  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 тоже... хотя я его по всякому пробовал.

    Почему пропадет только один символ? (квадратик то один, значит один правильно обрабатывается)

    Кто может сталкивался?

    Вооще-то с разрешения модератора это дубль отсюда что бы побольше людей моги увидеть и посоветовать :)
      А не к кодировке ли сие имеет отношение?
      Не, ну я так =)
        Да вроде не должно, годировка везде одна. Как проверить вот только че-то не соображу... Т.е. как под отладчиком различить кодировку строки?
          А, кстати, как вариант это есть обработка "выше".
          ХЗ как тут, но в тех же дельфях подобное наследовалось от родителя,в котором не было вообще понятия о подобных вещах.
            Цитата Nadz Goldman @
            А, кстати, как вариант это есть обработка "выше".
            ХЗ как тут, но в тех же дельфях подобное наследовалось от родителя,в котором не было вообще понятия о подобных вещах.


            Че!? :crazy:

            Кстати, я так подумал, пожалуй кодировка не причем. В любой кодировке /r/n будет /r/n/. Они же в английскую ANSI входят. Теболее, что в первую 13-дцатку. :)
              Эмм... Ща потыкаю
              Но, кстати, да.
              Чего-то я тут посмотрел - кодировка не то

              Добавлено
              Проблема знакомая, но решал я её использованием какой-то сторонней либы оказывается (это ж сколько лет назад было оказывается!)
              Так что сорри
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0236 ]   [ 15 queries used ]   [ Generated: 2.05.24, 10:55 GMT ]