C# 使用XML阅读器将特定信息从RSS提要获取到winform中
我是C#的新手,所以我会尽力解释这一点 我正在用C#创建一个简单的播客应用程序,并尝试使用XML阅读器接收RSS提要,然后将这些信息放入不同的winforms中 我已经想出了如何把我想要的主要信息放到列表框中。 然而,我无法理解的是,通过单击列表框中的列表项,从RSS提要中获取另一条信息(摘要)到richTextBox中 我制作的阅读RSS提要的课程 列表项C# 使用XML阅读器将特定信息从RSS提要获取到winform中,c#,winforms,xmlreader,rss-reader,C#,Winforms,Xmlreader,Rss Reader,我是C#的新手,所以我会尽力解释这一点 我正在用C#创建一个简单的播客应用程序,并尝试使用XML阅读器接收RSS提要,然后将这些信息放入不同的winforms中 我已经想出了如何把我想要的主要信息放到列表框中。 然而,我无法理解的是,通过单击列表框中的列表项,从RSS提要中获取另一条信息(摘要)到richTextBox中 我制作的阅读RSS提要的课程 列表项 public class RSSreader { public static List<Tuple<string, s
public class RSSreader
{
public static List<Tuple<string, string>> rssRead(string url)
{
string subject = "";
string summary = "";
var x = "";
var y = "";
var count = 0;
var list = new List<Tuple<string, string>>();
try
{
XmlReader reader = XmlReader.Create(url);
SyndicationFeed feed = SyndicationFeed.Load(reader);
reader.Close();
foreach (SyndicationItem item in feed.Items)
{
count++;
subject = item.Title.Text;
summary = item.Summary.Text;
x += count + " " + subject + " ";
list.Add(new Tuple<string, string>("Avsnitt " + count+ " " + subject, summary));
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
//Datahandler.SavePodFeed(list);
return list ;
}
}
public class RSSreader
{
public static List<Tuple<string, string>> rssRead(string url)
{
string subject = "";
string summary = "";
var x = "";
var y = "";
var count = 0;
var list = new List<Tuple<string, string>>();
try
{
//string urlX = "http://feeds.soundcloud.com/users/soundcloud:users:298230954/sounds.rss";
XmlReader reader = XmlReader.Create(url);
SyndicationFeed feed = SyndicationFeed.Load(reader);
reader.Close();
foreach (SyndicationItem item in feed.Items)
{
count++;
subject = item.Title.Text;
summary = item.Summary.Text;
x += count + " " + subject + " ";
list.Add(new Tuple<string, string>("Avsnitt " + count+ " " + subject, summary));
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
return list ;
}
}
公共类RSSreader
{
公共静态列表rssRead(字符串url)
{
字符串主语=”;
字符串摘要=”;
var x=“”;
变量y=“”;
var计数=0;
var list=新列表();
尝试
{
XmlReader=XmlReader.Create(url);
SyndicationFeed=SyndicationFeed.Load(读卡器);
reader.Close();
foreach(feed.Items中的SyndicationItem项目)
{
计数++;
主题=item.Title.Text;
summary=item.summary.Text;
x+=计数+“”+主题+“”;
添加(新元组(“Avsnitt”+计数+“”+主题,摘要));
}
}
捕获(例外情况除外)
{
控制台写入线(ex);
}
//SavePodFeed(列表);
退货清单;
}
}
公共类RSSreader
{
公共静态列表rssRead(字符串url)
{
字符串主语=”;
字符串摘要=”;
var x=“”;
变量y=“”;
var计数=0;
var list=新列表();
尝试
{
//字符串urlX=”http://feeds.soundcloud.com/users/soundcloud:users:298230954/sounds.rss";
XmlReader=XmlReader.Create(url);
SyndicationFeed=SyndicationFeed.Load(读卡器);
reader.Close();
foreach(feed.Items中的SyndicationItem项目)
{
计数++;
主题=item.Title.Text;
summary=item.summary.Text;
x+=计数+“”+主题+“”;
添加(新元组(“Avsnitt”+计数+“”+主题,摘要));
}
}
捕获(例外情况除外)
{
控制台写入线(ex);
}
退货清单;
}
}
我用什么填充列表框
private void button1_Click(object sender, EventArgs e)
{
var list = RSSreader.rssRead(tbxURL.Text);
foreach (Tuple<string, string> item in list)
{
listBox2.Items.Add(item.Item1);
}
listBox2.Items.Add(RSSreader.rssRead(tbxURL.Text));
}
private void按钮1\u单击(对象发送者,事件参数e)
{
var list=RSSreader.rssRead(tbxURL.Text);
foreach(列表中的元组项)
{
listBox2.Items.Add(item.Item1);
}
listBox2.Items.Add(RSSreader.rssRead(tbxURL.Text));
}
我的观点是使用摘要onclick从列表框填充richTextBox
private void listBox2_MouseClick(object sender, MouseEventArgs e)
{
var list = RSSreader.rssRead(tbxURL.Text);
foreach (Tuple<string, string> item in list)
{
if (item != listBox2.SelectedItem)
{
richTextBox1.Text = item.Item2.ToString();
}
}
}
private void listBox2\u鼠标单击(对象发送者,鼠标指针)
{
var list=RSSreader.rssRead(tbxURL.Text);
foreach(列表中的元组项)
{
如果(项!=列表框2.选择编辑项)
{
richTextBox1.Text=item.Item2.ToString();
}
}
}
我没有收到任何错误,但无论我单击列表中的哪个元素,它只会用相同的信息填充richTextBox。以下是一些指针:
- 存储RSS中每个元素的信息(例如,MyPodcastEntry.cs和属性索引(计数)、主题、摘要等)
- 在rssRead中填充这些类并将它们添加到列表中
- 将该列表添加到列表框中,而不是使用元组
- 在该类中调整它们在列表框中的显示方式
- 使用SelectedIndexChanged代替MouseClick事件
- 有一个可用的,无需制作您自己的nvm,您正在使用辛迪加,这很好:)
- 干净代码
- 未使用的变量x,y
- 而不是在顶端
- 更好的是,因为它们的值已经存储在item.Title.Text和item.Summary.Text中
private void listBox2\u鼠标单击(对象发送者,鼠标指针)
{
var list=RSSreader.rssRead(tbxURL.Text);
foreach(列表中的元组项)
{
如果(项!=列表框2.选择编辑项)
{
richTextBox1.Text=item.Item2.ToString();
}
}
}
你浏览了所有的条目,说:“如果这不是我要找的机器人,我会把它添加到RichTextBox中。”。我想你的意思是:“如果这是我要找的机器人,我会把它添加到RichTextBox中
这将是:
private void listBox2\u鼠标单击(对象发送者,鼠标指针)
{
var list=RSSreader.rssRead(tbxURL.Text);
foreach(列表中的元组项)
{
if(item==listBox2.SelectedItem)//注意相等运算符
{
richTextBox1.Text=item.Item2.ToString();
}
}
}
我不知道这是否是您的输入错误,但相等运算符是=
,而不是!=
您的代码将始终显示列表中的最后一项