富文本框中 JSON 数组中的粗体特定元素

Bold Specific Elements from JSON Array in Rich Textbox

我目前遇到的问题是从网络服务器检索的一段文本格式为 JSON 数组。

我想要完成的是以用户可以轻松阅读的方式格式化文本。我想要实现的示例输出是:

这是标题

根据所选主题,这是一段信息量不大的段落

这是副标题

这是另一段

字符串的外观(修改前):

{"Title":"This is a Title", "Content_One": "This is alittle informative paragraph based on the subject selected", "Title_Two": "This is another paragraph"}

我当前的应用程序使用的是 Winforms,我正在尝试将其添加到富文本框(希望能处理正确的格式)。作为一个小远景,我尝试返回 HTML 标签(非常远景)为此不提供对文本的更改。

我也尝试过单独遍历数组,并尝试以粗体方式从 JSON 数组中加粗某些元素。我试过的 None 提供了预期的输出。

尝试一:

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

哪个returns:

An unhandled exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll


尝试一:

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;
        });

截图: