сохранить текстовое поле формы Windows в конце строки

#c# #winforms #textbox #line-endings

#c# #winforms #текстовое поле #окончания строк

Вопрос:

У меня небольшая проблема с использованием элемента управления Windows forms textbox , я заполняю содержимое, используя значение XElement объекта. xml Откуда оно берется, пишется с окончанием строки Windows, поэтому у меня была надежда, что когда я представлю это содержимое в textbox , оно будет правильно отформатировано, но это не так. Все окончания строк отсутствуют, а содержимое представлено одной большой строкой. Ранее я установил для элемента управления значение multiline , но, по-видимому, это позволяет отображать только более одной строки, но это не имеет ничего общего с тем, как он интерпретирует текст, который я ему передаю.

Каков правильный способ исправить эту проблему?

Обновить

Я обнаружил, что проблема не в текстовом поле, а в том, как я получаю доступ к данным. Если я использую XElement, я получаю только одну большую строку, а если я использую XmlElement, я получаю хорошо отформатированный код. Вот код:

         XDocument doc = XDocument.Load("XMLFile1.xml");
        textBox1.Text = doc.Descendants("dos").Single().Value;

        XmlDocument doc2 = new XmlDocument();
        doc2.Load("XMLFile1.xml");
        textBox2.Text = doc2.GetElementsByTagName("dos")[0].InnerText;
  

Тогда вопрос будет переформулирован таким образом: Как я могу восстановить текст с помощью XElement, сохранив переводы строк?

Комментарии:

1. Итак, вы устанавливаете свойство Text текстового поля? Какое именно окончание строки имеет ваш XML-текст? Когда я попробовал это просто с помощью r n, разрыв строки отображается, как и ожидалось.

Ответ №1:

Вы можете попробовать это:

 XElement data = ...
myTextBox.Lines = data.Value.Split('n');
  

Комментарии:

1. спасибо за предложение, я просто не понимаю, почему это работает, : D. Если в текстовом поле отображается только одна объединенная строка, как я могу отделить ее символом » n»? я имею в виду, что этот символ не существует в первом экземпляре, так как же? что не так в этом мышлении?

2. более явно, если я сделаю TextBox1.Text = string. Присоединиться («rn», док. Потомки («dos»). Single().Значение. Разделить («rn». toCharArray())); я получаю внутренний текст, хорошо отформатированный, но подождите … я ничего не делаю! я разделяю и объединяю одним и тем же символом, чего мне не хватает?