同时不要忘记清除validateButton_Click函数,这是原例程中用来验证的函数,从这里可以看出,在按钮被删除后响应代码并没有被删除。保存并关闭OptionForm.cs,到此设置的设计结束。同时由于设置的变动,在ScreenSaverForm.cs中的LoadRssFeed()函数要调整如下:
private void LoadRssFeed()
{
try
{
// 尝试从用户设置获取该数据
rssFeed = RssFeed.FromUri(Properties.Settings.Default.RssFeedUris[i]);
}
catch
{
// 如果加载 RSS 时出现了问题,则加载一个错误信息 RSS 源
rssFeed = RssFeed.FromText(Properties.Resources.DefaultRSSText);
}
}
3.显示多RSS源
下面要解决显示中RSS源之间切换的问题。笔者的解决方法是在键盘响应中增加对左右键的响应函数PreviorsRss和NextRss,响应内容分别是读取下一个(右键)或上一个(左键)RSS源,并重新建立两个RSS绘图类(即ItemDescriptionView.cs和ItemListView.cs,一个完成新闻项列表的绘制,一个完成详细信息的绘制)的对象,对窗体进行重新绘制。在进行下面操作之前,请按照ScreenSaverStarterKit.htm的要求完成对键盘上下键响应的操作。
打开ScreenSaverForm.cs,使用代码视图。两个函数的代码如下:
//访问前一个RSS源
private void NextRss()
{
try
{
i = i + 1;
if (i >= Properties.Settings.Default.RssFeedUris.Count)
{
i = 0;
}
rssFeed = RssFeed.FromUri(Properties.Settings.Default.RssFeedUris[i]);
}
catch
{
rssFeed = RssFeed.FromText(Properties.Resources.DefaultRSSText);
}
//读取完后还需要重新建立显示对象
//这个函数很关键,一定要释放资源
rssView.Dispose();
|