⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 channel.cs

📁 可以收藏RSS和ATOM格式新闻频道,还可以收藏常用的html格式的网址;可以在新闻快客的地址栏直接输入任何网址浏览网页官方网址:http://t811.uu1001.com
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Text;
using System.Web;
using System.Net;
using System.Xml;
using System.Windows.Forms;

namespace NewsReader
{
    public partial class channel : Form
    {
        //FeedBase feedbase;

        private string title;
        private string ptitle;
        public string Title
        {
            get { return title; }
            set { title = value; }
        }
        private ReaderView viewType;

        public ReaderView ViewType
        {
            get { return viewType; }
            set { viewType = value; }
        }
        private string readerType;

        public string ReaderType
        {
            get { return readerType; }
            set { readerType = value; }
        }

        //添加书签信息使用,默认是添加书签
        public channel()
        {
            InitializeComponent();
            viewType = ReaderView.Add;
            chkFeedType();

        }

        //删除修改书签信息使用
        public channel(ReaderView mode, string title)
        {
            InitializeComponent();
            viewType = mode;
            this.title = title;
            chkFeedType();
        }

        //修改书签信息使用
        public channel(ReaderView mode,string title,string uptitle)
        {
            InitializeComponent();
            viewType = mode;
            this.title = title;
            this.ptitle = uptitle;
            chkFeedType();
        }

        //初始化窗体模式
        public void chkFeedType()
        {
            switch (viewType)
            {
                case ReaderView.Add://如果是添加模式
                    panel1.Visible = false;
                    break;
                case ReaderView.Modiy://如果是修改模式
                    /*能修改*/
                    txtFeedName.ReadOnly = false;
                    txtFeedUrl.ReadOnly = false;
                    txtFeedDesc.ReadOnly = false;
                    readChannel();
                    break;
                case ReaderView.View://如果是查看模式
                    /*不能修改*/
                    txtFeedName.ReadOnly = true;
                    txtFeedUrl.ReadOnly = true;
                    txtFeedDesc.ReadOnly = true;
                    readChannel();
                    break;
            }
        }

        private void btnModiy_Click(object sender, EventArgs e)
        {
            switch (viewType)
            {
                case ReaderView.View://如果当前是查看模式,则改为修改模式
                    viewType = ReaderView.Modiy;
                    chkFeedType();
                    break;
                case ReaderView.Modiy://如果当前是修改模式,则修改后关闭窗体
                    editChannel();
                    break;
                case ReaderView.Add://如果当前是添加模式,

                    break;

            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// 初始读取
        /// </summary>
        private void readChannel()
        {
            string desc;
            string name;
            string url;
            string count;
            string type;
            if (ptitle == null)//如果没有子节点
            {
                desc = frmMainwindow.feeds[title].Description;
                name = frmMainwindow.feeds[title].DisplayName;
                url = frmMainwindow.feeds[title].Url;
                count = frmMainwindow.feeds[title].Clicks.ToString();
                type = frmMainwindow.feeds[title].Feedtype.ToString();
            }
            else//如果有子节点
            {
                desc = frmMainwindow.feeds[ptitle].Articles[title].Description;
                name = frmMainwindow.feeds[ptitle].Articles[title].Title;
                url = frmMainwindow.feeds[ptitle].Articles[title].Url;
                count = frmMainwindow.feeds[ptitle].Articles[title].Clicks.ToString();
                type = frmMainwindow.feeds[ptitle].Articles[title].Feedtype.ToString();
            }
            txtFeedDesc.Text = desc;
            txtFeedName.Text = name;
            txtFeedUrl.Text = url;
            lblcount.Text = count;
            foreach (RadioButton rdio in grbType.Controls)
            {
                if (rdio.Tag.ToString() == type)
                    rdio.Checked = true;
            }
            btnOK.Text = "确定(&O)";
        }

        /// <summary>
        /// 编辑
        /// </summary>
        private void editChannel()
        {
            if (ptitle == null)//没有子节点
            {
                frmMainwindow.feeds.Remove(title);
                addChannel(false);
                frmMainwindow.isUntitled = true;//未保存过
                
            }
        }
        FeedBase feedbase;

        /// <summary>
        /// 添加
        /// </summary>
        private void addChannel(bool ti)
        {
            if (txtFeedName.Text.Trim() != "" || txtFeedUrl.Text.Trim() != "" || txtFeedDesc.Text.Trim() != "")
            {
                int count = frmMainwindow.feeds.Count;//添加之前的数量
                try
                {
                    /*先将数据存进feedbase中*/
                    //rss.ReaderType rtype;
                    foreach (RadioButton radio in grbType.Controls)
                    {
                        if (radio.Checked)//被选中的项
                        {
                            switch (radio.Tag.ToString())//文档格式
                            {
                                case "html":
                                    feedbase = new HtmlFeed();
                                    feedbase.Feedtype = "html";
                                    break;
                                case "rss":
                                    feedbase = new RssFeed();
                                    feedbase.Feedtype = "rss";
                                    break;
                                case "feed":
                                    feedbase = new AtomFeed();
                                    feedbase.Feedtype = "feed";
                                    break;
                            }
                            feedbase.DisplayName = txtFeedName.Text.Trim();
                            feedbase.Url = txtFeedUrl.Text.Trim();
                            feedbase.Description = txtFeedDesc.Text.Trim();
                            try
                            {
                                frmMainwindow.feeds.Add(feedbase.DisplayName, feedbase);//将feedbase添加到feeds集合中
                            }
                            catch (Exception)
                            {
                                return;
                            }
                            break;
                        }
                    }
                }
                catch (ArgumentException aEx)
                {
                    Console.Write(aEx.ToString());
                }
                if (ti)
                {
                    if (frmMainwindow.feeds.Count > count)//添加之后的数目有增加就表示为添加成功
                    {
                        frmMainwindow.isUntitled = true;//未保存过
                        MessageBox.Show("添加成功!");
                    }
                    else
                    {
                        MessageBox.Show("添加失败!");
                    }
                }
            }
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            if (txtFeedName.Text.Trim() == "" )
            {
                MessageBox.Show("请输入标签名称!");
                txtFeedName.Focus();
                return;
            }
            if (txtFeedUrl.Text.Trim() == "")
            {
                MessageBox.Show("请输入网址!");
                txtFeedUrl.Focus();
                return;
            }
            if(viewType.Equals(ReaderView.Modiy))//如果是修改模式,按确定之后要能关闭窗体
            {
                editChannel();
                this.Close();
            }
            if (viewType.Equals(ReaderView.Add))//如果是添加模式,按添加按钮之后窗体不关闭
            {
                addChannel(true);
            }
        }

        private void btnAutoTest_Click(object sender, EventArgs e)
        {
            string addurl = txtFeedUrl.Text.Trim();
            if (addurl == "")
            {
                MessageBox.Show("请输入网址!");
                txtFeedUrl.Focus();
                return;
            }
            XmlDataDocument doc = new XmlDataDocument();
            /*if(!(addurl.Substring(addurl.Length-4,4).Equals(".xml",StringComparison.CurrentCultureIgnoreCase)))
            {
                MessageBox.Show("非XML格式的文档网址,不能自动获取相关的信息!");
                rdoHtml.Checked = true;
                return;
            }
            */
            try
            {
                doc.Load(addurl);
            }
            catch (Exception nse)
            {
                Console.Write(nse.ToString());
                MessageBox.Show("非XML格式的文档网址,不能自动获取相关的信息!");
                rdoHtml.Checked = true;
                return;
            }
            XmlNode rootnode = doc.DocumentElement;           //读取XML的根节点
            XmlNode channel = rootnode.FirstChild;
            foreach (RadioButton radio in grbType.Controls)
            {
                if (rootnode.Name.ToString() == radio.Tag.ToString())//文档格式
                {
                    radio.Checked = true;
                    if (rootnode.Name.ToString() == "rss")
                    {
                        foreach (XmlNode item in channel.ChildNodes)        //对子节点进行循环
                        {
                            if (item.Name == "title") txtFeedName.Text = item.InnerText.ToString();
                            if (item.Name == "description") txtFeedDesc.Text = item.InnerText.ToString();

                        }

                    }
                    else if (rootnode.Name.ToString() == "feed")
                    {
                        foreach (XmlNode item in rootnode.ChildNodes)        //对子节点进行循环
                        {
                            if (item.Name == "title") txtFeedName.Text = item.InnerText.ToString();
                            if (item.Name == "tagline") txtFeedDesc.Text = item.InnerText.ToString();

                        }
                    }
                    break;
                }
                else { rdoHtml.Checked = true; }
            }
        }

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -