2015-10-19 33 views
1

我目前面临的问题是将一组文本从Web服务器中检索为一个JSON数组。来自Rich Textbox中JSON数组的粗体特定元素

我想要达成的目标是以一种可以被用户轻松阅读的方式格式化文本。什么,我想实现的一个示例输出:

这是一个标题

这是基于主题有点翔实的段落选择

这是一个次要标题

这是另一段

字符串看起来(在修改之前)的方式:

{“标题”:“这是一个标题”,“Content_One”:“这是小有一点基于所选择的主题 信息段”,“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

必须对提供的代码进行一些细微的修改,因为我目前正在构建应用程序围绕JSON.net提供。但是这完全按照需要工作。谢谢 –

+0

不客气:-) –