I"m trying to build a news feed application and i'm having trouble formatting the results. I'm sure the issue is just lack of experience. There are two main issues I'm having. The first is the item.summary.text pulls a bunch of links past the summary.
The other issue I'm having is to bold all the titles and change their color. I'm also using the Rich text box which is probably not the best way to represent the data.
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);
}
}
}
}
Instead of a RichTextBox, you could use a control that is more HTML friendly like the WebBrowser control. Then you can build an HTML string & format it with CSS. Let's say you add a WebBrowser control named webBrowser
to your form. You could then replace your current foreach
loop with something like this:
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();
Also see How to: Add Web Browser Capabilities to a Windows Forms Application