2017-04-14 5 views
2

Ich versuche, eine Nachrichtenfeed-Anwendung zu erstellen, und ich habe Probleme beim Formatieren der Ergebnisse. Ich bin sicher, das Problem ist nur mangelnde Erfahrung. Es gibt zwei Hauptprobleme, die ich Der erste ist der item.summary.text zieht eine Reihe von Links hinter der Zusammenfassung.C# RSS-Syndication, Text programmgesteuert formatieren

Das andere Problem, das ich habe, ist, alle Titel zu bold und ändern Sie ihre Farbe.Ich benutze auch die Rich-Text-Box, die wahrscheinlich nicht der beste Weg ist, um die Daten darzustellen.

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

Antwort

1

Statt einem RichTextBox, könnten Sie eine Steuerung verwenden, die mehr HTML-freundlich wie dieistKontrolle. Dann können Sie eine HTML-Zeichenfolge & mit CSS formatieren. Angenommen, Sie fügen Ihrem Formular ein WebBrowser-Steuerelement mit dem Namen webBrowser hinzu. Sie könnten dann Ihre aktuelle foreach Schleife mit so etwas wie diese ersetzen:

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

Siehe auch How to: Add Web Browser Capabilities to a Windows Forms Application

+0

, die perfekt gearbeitet, um Ihnen so sehr danken! –

+0

Kein Problem, @Undead_Atomsk, bitte kannst du als Antwort markieren ... und wenn du es wirklich gemocht hast, kannst du auch hochstimmen, wie ich es für deine Frage getan habe ;-) – davmos