来自Rich Textbox中JSON数组的粗体特定元素
问题描述:
我目前面临的问题是将一组文本从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;
这将删除粗体
答
您需要使用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;
});
截图:
要使用的样品,不要忘了加上'使用System.Linq的;'而且如果你需要使用'JavaScriptSerializer',添加引用'System.Web.Extensions'并添加'using System.Web.Script.Serialization;' –
必须对提供的代码进行一些细微的修改,因为我目前正在构建应用程序围绕JSON.net提供。但是这完全按照需要工作。谢谢 –
不客气:-) –