因此,我从JSON文件中抓取内容并将每个项目附加到富文本框控件。但是,当我追加并修改外观时......它随机看起来像......
当然中间的那个格式正确,它是外面的那些不是。
它也是完全随机的。有些人会工作,有些人会胜利。那是什么让我失望的。
这是代码......
private void getNews()
{
WebClient newsClient = new WebClient();
Stream newsStream = newsClient.OpenRead("http://example.com/file.json");
StreamReader newsReader = new StreamReader(newsStream);
String newsReaderContent = newsReader.ReadToEnd();
Console.WriteLine(newsReaderContent);
JObject newsResults = JObject.Parse(newsReaderContent);
foreach (var newNews in newsResults["news"])
{
newsFeedControl.Text += newNews["title"] +
Environment.NewLine +
newNews["date"] +
Environment.NewLine +
newNews["content"] +
Environment.NewLine +
Environment.NewLine;
setNewsContent(newNews);
}
}
private void setNewsContent(JToken news)
{
List<int> indexDate = new List<int>();
List<int> indexContent = new List<int>();
List<int> indexTitle = new List<int>();
string postTitle = news["title"].ToString();
string postDate = news["date"].ToString();
string postContent = news["content"].ToString();
indexTitle = indexFeed(postTitle);
indexDate = indexFeed(postDate);
indexContent = indexFeed(postContent);
foreach (int item in indexTitle)
{
newsFeedControl.Select(item, postTitle.Length);
newsFeedControl.SelectionColor = Color.White;
newsFeedControl.SelectionFont = new System.Drawing.Font("Segoe UI", 11, FontStyle.Underline);
}
foreach (int item in indexDate)
{
newsFeedControl.Select(item, postDate.Length);
newsFeedControl.SelectionColor = Color.White;
newsFeedControl.SelectionFont = new System.Drawing.Font("Segoe UI", 7, FontStyle.Italic);
}
foreach (int item in indexContent)
{
newsFeedControl.Select(item, postContent.Length);
newsFeedControl.SelectionColor = Color.White;
newsFeedControl.SelectionFont = new System.Drawing.Font("Segoe UI", 10);
}
}
private List<int> indexFeed(String word)
{
List<int> indexes = new List<int>();
int i = 0;
int ind = 0;
while (i < newsFeedControl.Text.Length)
{
ind = newsFeedControl.Find(word, i, RichTextBoxFinds.WholeWord);
if (ind != -1)
{
indexes.Add(ind);
i = i + ind + 1;
}
else
return indexes;
}
return indexes;
}
我不确定导致这种混乱的原因是什么,或者我能做些什么来帮助它。 任何指向正确方向的帮助将不胜感激。谢谢你。
答案 0 :(得分:0)
这是问题所在:
newsFeedControl.Text += newNews["title"]...
从不直接设置Text
或所有以前的格式都搞砸了。请始终使用AppendText
:
newsFeedControl.AppendText(newNews["title"] + ...);
对于Text
属性的任何其他操作也是如此。始终使用SelectedText
代替Cut()
,Copy()
或Paste()
..!
看似随机的后果来自于RTB尝试忽略损坏的标签这一事实,因此有些事情看起来比其他事情更好。看看Rtf属性,看看我的意思..