2015-10-19 3 views
1

В настоящее время у меня возникает проблема с форматированием фрагмента текста, который извлекается с веб-сервера в виде массива JSON.Смелые конкретные элементы из массива JSON в Rich Textbox

То, что я пытаюсь выполнить, состоит в форматировании текста таким образом, который может быть легко прочитан пользователем. Пример вывод о том, что я пытаюсь достичь:

Это титульный

Это малоинформативен пункт на основе объекта, выбранного

Это второстепенный титул

Это еще один абзац

Способ, которым выглядит строка (до модификации):

{ "Название": "Это название", "Content_One": "Это Alittle информативный пункт на основе объекта, выбранного", "Title_Two": "Это еще один пункт"}

В моем текущем приложении используется Winforms, и я пытаюсь перекачать его в Rich Text Box (надеюсь, будет обрабатывать правильное форматирование). Как немного длинный снимок, я попытался вернуть HTML-теги (очень длинный снимок). Для этого не нужно изменять текст.

Я также пробовал индивидуально итерации по массиву и пытаюсь рисовать элементы из массива JSON. Ни один из которых я не попытался обеспечить ожидаемый результат.

Покушение один:

TTKNormalContent.Text = new Font(ReturnArr.Title, FontStyle.Bold).ToString(); 

Который возвращает:

Необработанное исключение типа 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' произошло в System.Core.dll


Att покупать право один:

TTKNormalContent.Text = ReturnArr.Title; 
TTKNormalContent.SelectionFont = new Font(this.Font, FontStyle.Bold); 

который не полужирный из текста


Покушение Два:

можно временно сделать текст жирным шрифтом по:

TTKNormalContent.Font = new Font(TTKNormalContent.Font, FontStyle.Bold); 
    TTKNormalContent.Text = ReturnArr.Title; 

Но добавив:

TTKNormalContent.Font = new Font(TTKNormalContent.Font, FontStyle.Regular); 
TTKNormalContent.Text += ReturnArr.ContentOne; 

Которая удаляет смелость

ответ

1

Вам необходимо использовать AppendText. Когда вы используете Text+= "something", вы заменяете формат.

Вы можете использовать этот пример:

var json = "{\"Title\":\"This is a Title\", \"Content_One\": \"This is alittle informative paragraph based on the subject selected\", \"Title_Two\": \"This is another paragraph\"}"; 
var start = 0; 
Dictionary<string, string> values = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(json); 

values.Cast<KeyValuePair<string, string>>() 
     .ToList() 
     .ForEach(item => 
     { 
      this.richTextBox1.AppendText(item.Key); 
      this.richTextBox1.AppendText(":"); 
      start += item.Key.Length + 1; 
      this.richTextBox1.AppendText(item.Value); 
      this.richTextBox1.Select(start, item.Value.Length); 
      this.richTextBox1.SelectionFont = new Font(this.richTextBox1.Font, FontStyle.Bold); 
      this.richTextBox1.AppendText("\n"); 
      start += item.Value.Length + 1; 
     }); 

Скриншот:

enter image description here

+0

Чтобы использовать образец, не забудьте добавить 'используя System.Linq;' а также, если вы нужно использовать 'JavaScriptSerializer', добавить ссылку' System.Web.Extensions' и добавить 'using System.Web.Script.Serialization;' –

+0

Придется внести небольшие изменения в предоставленный код, так как я в настоящее время создаю приложение lication вокруг JSON.net. Но это работает именно так, как нужно. Спасибо –

+0

Добро пожаловать :-) –

Смежные вопросы