接下来,为了方便安全地按照我们的需要保存查询结果,我们添加一个类MyNewsResult:
public class MyNewsResult
{
public string Date { get; set; }//日期
public string Title { get; set; }//标题
public string Snippet { get; set; }//新闻选段
}
然后,我们来关注一下DisplayResponse函数:
private void DisplayResponse(SearchResponse response)
{
if (response.News != null &&
response.News.Results != null &&
response.News.Results.Length > 0)
{
//提取我们需要的信息,以MyNewsResult的形式存放每条结果
var results = from bingResults in response.News.Results
select new MyNewsResult() { Date = bingResults.Date,
Title = bingResults.Title,
Snippet = bingResults.Snippet };
//将结果保存到listview的tag中以便继续使用
lvResult.Tag = results.ToArray();
//将相关新闻查询保存至ComboBox
if (response.News.RelatedSearches != null &&
response.News.RelatedSearches.Length > 0)
{
foreach (var rs in response.News.RelatedSearches)
{
cbRelated.Items.Add(rs.Title);
}
}
//将我们需要的结果标题添加到ListView
foreach (var r in (MyNewsResult[])lvResult.Tag)
{
lvResult.Items.Add(new ListViewItem(r.Title.ToString()));
}
}
}
最后,我希望在选中listView中的某一项的时候能够显示该新闻的日期和新闻选段。于是在lvResult的ItemActivate事件处理函数中我们添加如下代码:
MyNewsResult[] nr = (MyNewsResult[])lvResult.Tag;
if (nr != null)
{
MessageBox.Show(nr[lvResult.SelectedIndices[0]].Snippet,
nr[lvResult.SelectedIndices[0]].Date);
}
到此,主要的工作我们已经完成了(完整的代码文章末尾有下载)。不妨来看看运行效果: