Den nemme måde:
Ændre denne metode:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
var reader = new XmlTextReader((string)e.Argument);
var feed = SyndicationFeed.Load(reader);
var items = new List<ListViewItem>();
foreach (var item in feed.Items)
{
var listItem = new ListViewItem();
listItem.Text = item.Title.Text;
foreach (var link in item.Links)
{
listItem.SubItems.Add(link.Uri.AbsoluteUri);
}
listItem.Tag = item;
items.Add(listItem);
}
e.Result = items.ToArray();
}
Og denne:
private void lstView_SelectedIndexChanged(object sender, EventArgs e)
{
txtDesc.Text = ((SyndicationItem)lstView.SelectedItems[0].Tag).Summary.Text;
}
Overstående er ikke testet. Så der er muligvis stadig lidt småfejl :-)
Det fungerer første gang jeg klikker på en titel i lstview, men anden gang smider den en exception:
"InvalidArgument=Value of '0' is not valid for 'index'.
Parameter name: index"
Ah den starter åbenbart med at fravælge den anden. Trigger eventet inden den vælger en ny og trigger eventet igen.
private void lstView_SelectedIndexChanged(object sender, EventArgs e)
{
if (lstView.SelectedItems.Count > 0)
txtDesc.Text = ((SyndicationItem)lstView.SelectedItems[0].Tag).Summary.Text;
}
Hvis det er muligt at vælge flere listview items på en gang bør du nok overveje hvad der så skal ske.
Måske dette i stedet, i tilfælde af man ikke har valgt nogen. (Fravælger den der ellers var valgt uden at vælge en ny.)
private void lstView_SelectedIndexChanged(object sender, EventArgs e)
{
if (lstView.SelectedItems.Count > 0)
txtDesc.Text = ((SyndicationItem)lstView.SelectedItems[0].Tag).Summary.Text;
else
txtDesc.Text = string.Empty;
}
Det ser ud til at fungere efter hensigten.
Tak for hjælpen - smid et svar og du får point.