技术开发 频道

自己动手制作多线程RSS新闻阅读器

  只有当ListBox的DrawMode 属性设置为 DrawMode.OwnerDrawFixed 或 DrawMode.OwnerDrawVariable 时,才会激活MeasureItem事件,其次是DrawItem事件。首先,在绘制之前可以使用MeasureItem事件确定Item项的大小,然后激活DrawItem事件开始实际绘制操作。

  在初始化主窗体时,我们先定义好所有相关变量和对象,如下:
 

private const string errortext = "获取服务器信息失败,请检查网络连接是否正常。";
        private bool hasError = false;
        private DataTable rssData;
        private Font titleFont, descFont;
        private int leftMargines;
        private int topMargines;
        private int rectDistance;

        public Form1()
        {
            InitializeComponent();
            titleFont = new Font("Microsoft Sans Serif", 10, FontStyle.Bold);
            descFont = new Font("Microsoft Sans Serif", 10, FontStyle.Regular);
            leftMargines = 8;
            topMargines = 10;
            rectDistance = 12;
        }

  最后,我们可以为ListBox的DoubleClick事件添加相应代码,以便当双击Item时可以启动浏览器打开对应的链接。因为ListBox中项的索引和rssData的item表的记录数是一一对应的,我们可以很方便的在它们之间建立关联并导航链接。代码如下:

private void listBox1_DoubleClick(object sender, EventArgs e)
        {
            string linkurl = rssData.Rows[listBox1.SelectedIndex]["link"].ToString();
            System.Diagnostics.Process.Start("iexplore.exe", linkurl);
        }


  至此,属于我们自己版本的多线程RSS新闻阅读器制作完毕。虽然这仅仅是个思路和框架,细节之处不够完善,但是已经具备了大部分基本功能,有兴趣的网友可以继续扩展。

代码下载:演示代码

0
相关文章