C# RSS Syndication,如何以编程方式格式化文本
C# RSS Syndication, How to format text programmatically
我正在尝试构建新闻提要应用程序,但在格式化结果时遇到问题。我确定问题只是缺乏经验。我遇到了两个主要问题。第一个是item.summary.text 从摘要中拉出一堆链接。
我遇到的另一个问题是将所有标题加粗并更改它们的颜色。我还使用了富文本框,这可能不是表示数据的最佳方式。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ServiceModel.Syndication;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Xml.Linq;
using System.IO;
using System.Net;
using System.Xml;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ltest1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string url = " http://feeds.reuters.com/reuters/topNews";
XmlReader reader = XmlReader.Create(url);
SyndicationFeed feed = SyndicationFeed.Load(reader);
reader.Close();
foreach (SyndicationItem item in feed.Items)
{
Fodder_Box.SelectionStart = "Title".Length;
Fodder_Box.SelectionColor = Color.Red;
Fodder_Box.SelectionFont = new Font("Arial", 20, FontStyle.Bold);
Fodder_Box.AppendText("Title: " + item.Title.Text + Environment.NewLine + Environment.NewLine);
Fodder_Box.SelectionStart = "Summary".Length;
Fodder_Box.SelectionColor = Color.Black;
Fodder_Box.SelectionFont = new Font("Arial", 20, FontStyle.Regular);
Fodder_Box.AppendText("Date: " + item.PublishDate.ToString("yyyy/MM/dd H:MM:ss") + Environment.NewLine + Environment.NewLine);
Fodder_Box.AppendText("Summary: " + item.Summary.Text + Environment.NewLine);
Fodder_Box.AppendText("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + Environment.NewLine + Environment.NewLine);
}
}
}
}
您可以使用更 HTML 友好的控件来代替 RichTextBox,例如 WebBrowser 控件。然后你可以构建一个 HTML 字符串并用 CSS 格式化它。假设您向窗体添加了一个名为 webBrowser
的 WebBrowser 控件。然后你可以用这样的东西替换你当前的 foreach
循环:
var text = new StringBuilder();
foreach (SyndicationItem item in feed.Items)
{
text.AppendFormat("<p style='font-family:arial;color:red;font-size:20;font-weight:bold;'>Title: {0}</p>", item.Title.Text);
text.AppendLine("</br>");
text.AppendLine("</br>");
text.AppendFormat("<p style='font-family:arial;font-size:20;'>Date: {0:yyyy/MM/dd H:MM:ss}</p>", item.PublishDate);
text.AppendLine("</br>");
text.AppendLine("</br>");
text.AppendFormat("<p style='font-family:arial;font-size:20;'>Summary: {0}</p>", item.Summary.Text);
text.AppendLine("</br>");
text.AppendLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
text.AppendLine("</br>");
text.AppendLine("</br>");
}
webBrowser.DocumentText = text.ToString();
另见 How to: Add Web Browser Capabilities to a Windows Forms Application
我正在尝试构建新闻提要应用程序,但在格式化结果时遇到问题。我确定问题只是缺乏经验。我遇到了两个主要问题。第一个是item.summary.text 从摘要中拉出一堆链接。
我遇到的另一个问题是将所有标题加粗并更改它们的颜色。我还使用了富文本框,这可能不是表示数据的最佳方式。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ServiceModel.Syndication;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Xml.Linq;
using System.IO;
using System.Net;
using System.Xml;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ltest1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string url = " http://feeds.reuters.com/reuters/topNews";
XmlReader reader = XmlReader.Create(url);
SyndicationFeed feed = SyndicationFeed.Load(reader);
reader.Close();
foreach (SyndicationItem item in feed.Items)
{
Fodder_Box.SelectionStart = "Title".Length;
Fodder_Box.SelectionColor = Color.Red;
Fodder_Box.SelectionFont = new Font("Arial", 20, FontStyle.Bold);
Fodder_Box.AppendText("Title: " + item.Title.Text + Environment.NewLine + Environment.NewLine);
Fodder_Box.SelectionStart = "Summary".Length;
Fodder_Box.SelectionColor = Color.Black;
Fodder_Box.SelectionFont = new Font("Arial", 20, FontStyle.Regular);
Fodder_Box.AppendText("Date: " + item.PublishDate.ToString("yyyy/MM/dd H:MM:ss") + Environment.NewLine + Environment.NewLine);
Fodder_Box.AppendText("Summary: " + item.Summary.Text + Environment.NewLine);
Fodder_Box.AppendText("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + Environment.NewLine + Environment.NewLine);
}
}
}
}
您可以使用更 HTML 友好的控件来代替 RichTextBox,例如 WebBrowser 控件。然后你可以构建一个 HTML 字符串并用 CSS 格式化它。假设您向窗体添加了一个名为 webBrowser
的 WebBrowser 控件。然后你可以用这样的东西替换你当前的 foreach
循环:
var text = new StringBuilder();
foreach (SyndicationItem item in feed.Items)
{
text.AppendFormat("<p style='font-family:arial;color:red;font-size:20;font-weight:bold;'>Title: {0}</p>", item.Title.Text);
text.AppendLine("</br>");
text.AppendLine("</br>");
text.AppendFormat("<p style='font-family:arial;font-size:20;'>Date: {0:yyyy/MM/dd H:MM:ss}</p>", item.PublishDate);
text.AppendLine("</br>");
text.AppendLine("</br>");
text.AppendFormat("<p style='font-family:arial;font-size:20;'>Summary: {0}</p>", item.Summary.Text);
text.AppendLine("</br>");
text.AppendLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
text.AppendLine("</br>");
text.AppendLine("</br>");
}
webBrowser.DocumentText = text.ToString();
另见 How to: Add Web Browser Capabilities to a Windows Forms Application