#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())); я получаю внутренний текст, хорошо отформатированный, но подождите … я ничего не делаю! я разделяю и объединяю одним и тем же символом, чего мне не хватает?