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

📄 main.cs

📁 PRR(个性RSS阅读器) PRR是一款全新的快捷实用的RSS阅读器
💻 CS
📖 第 1 页 / 共 4 页
字号:
                    return;
                }
                StreamReader reader = new StreamReader(@"mode.htm");
                string News = reader.ReadToEnd();
                reader.Close();
                string Title = dataGridViewNewsList.Rows[e.RowIndex].Cells[0].Value.ToString();
                if (Title == "")
                {
                    return;
                }
                string PubDate = dataGridViewNewsList.Rows[e.RowIndex].Cells[1].Value.ToString();
                string Author = dataGridViewNewsList.Rows[e.RowIndex].Cells[2].Value.ToString();
                string Description = dataGridViewNewsList.Rows[e.RowIndex].Cells[3].Value.ToString();
                string Category = dataGridViewNewsList.Rows[e.RowIndex].Cells[4].Value.ToString();
                string Link = dataGridViewNewsList.Rows[e.RowIndex].Cells[5].Value.ToString();
                News = News.Replace("&Author", Category);
                News = News.Replace("&TITLE", Title);
                News = News.Replace("&PubDate", PubDate);
                News = News.Replace("&Author", Author);
                News = News.Replace("&Description", Description);
                News = News.Replace("&LINK", Link);
                News = News.Replace("&READ", "阅读全文");
                webBrowserNewsList.DocumentText = News;
                splitContainer2.Panel2Collapsed = false;
                //CreateWebSite(Link);
            }
            catch (Exception ee)
            {
                //MessageBox.Show(ee.Message);
            }
        }
        /// <summary>
        /// 删除选中的RSS频道或频道组
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 删除目录RSS站点ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                MyTreeNode node = (MyTreeNode)TreeViewMenu.SelectedNode;
                string path = TreeViewMenu.SelectedNode.FullPath;
                if (node.IsFolder)
                {
                    path = GetXpath(path, "YES");
                    DeleteNode(path, "NO");
                }
                else
                {
                    path = GetXpath(path, "NO");
                    DeleteNode(path, node.MyRssLink.Link);
                }
                node.Remove();

                //BindNode();
            }
            catch
            {
                ;
            }
        }
        /// <summary>
        /// 获取频道的在XML文件中存储的对象的XML节点路径
        /// </summary>
        /// <param name="path"></param>
        /// <param name="IsFolder"></param>
        /// <returns></returns>
        string GetXpath(string path, string IsFolder)
        {
            char[] c1 = new char[1] { '\\' };
            string[] url = path.Split(c1);
            string Xpath = @"/config/tree";
            int a;
            a = url.Length;
            int i;
            for (i = 0; i < a - 1; i++)
            {
                Xpath = Xpath + "/folder[@name=\"" + url[i] + "\"]";
            }
            if (IsFolder == "YES")
            {
                Xpath = Xpath + "/folder[@name=\"" + url[i] + "\"]";

            }
            else
            {
                Xpath = Xpath + "/channel";
            }
            return Xpath;
        }
        /// <summary>
        /// 删除RSS频道或频道组
        /// </summary>
        /// <param name="Path"></param>
        /// <param name="Link"></param>
        void DeleteNode(string Path, string Link)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(RSS.GetMenuFileUrl());
            if (Link == "NO")
            {
                XmlNode node = xmlDoc.SelectSingleNode(Path);//追击节点的起始位置
                node.RemoveAll();
                node.ParentNode.RemoveChild(node);

            }
            else
            {
                XmlNodeList nodelist = xmlDoc.SelectNodes(Path);//追击节点的起始位置 
                foreach (XmlNode nd in nodelist)
                {
                    if (nd["link"] != null && nd["link"].InnerText == Link)
                    {
                        nd.RemoveAll();
                        nd.ParentNode.RemoveChild(nd);
                    }
                }
            }
            xmlDoc.Save(RSS.GetMenuFileUrl());//保存到xml文件中
        }
        /// <summary>
        /// 添加RSS频道组
        /// </summary>
        /// <param name="Path"></param>
        /// <param name="Name"></param>
        void AddFolder(string Path, string Name)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(RSS.GetMenuFileUrl());
            XmlNode node = xmlDoc.SelectSingleNode(Path);//追击节点的起始位置
            XmlElement element0 = xmlDoc.CreateElement("folder");//创建一个节点            
            element0.SetAttribute("name", Name);
            element0.SetAttribute("open", "1");
            node.AppendChild(element0);//将所以节点添加到起始位置下
            xmlDoc.Save(RSS.GetMenuFileUrl());//保存到xml文件中            
        }
        /// <summary>
        /// 添加目录按牛触发的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 添加目录ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ShowAdd();
            toolAddFolder.Visible = true;
        }
        void ShowAdd()
        {
            if (!splitContainer1.Panel2Collapsed)
            {
                splitContainer1.Panel2Collapsed = true;
            }
            else
            {
                splitContainer1.Panel2Collapsed = false;
            }

        }
        /// <summary>
        /// 判断是否存在该RSS频道组
        /// </summary>
        /// <param name="FolderName"></param>
        /// <returns></returns>
        bool IsExistFolder(string FolderName)
        {
            TreeNode Node = TreeViewMenu.SelectedNode;
            TreeNodeCollection Nodes = Node.Nodes;
            foreach (TreeNode MyNode in Nodes)
            {
                if (MyNode.Text == FolderName)
                    return true;
            }
            return false;

        }
        bool JuBuFree = true;
        /// <summary>
        /// 更新事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 更新ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                ThreadMyTreeNode = ((MyTreeNode)TreeViewMenu.SelectedNode);
                if (ThreadMyTreeNode.IsFolder)
                {
                    if (!JuBuFree)
                    {
                        return;
                    }
                    JuBuFree = false;
                    object oo = new object();
                    lock (oo)
                    {
                        txtOutPut.Text = "开始更新......";
                        txtOutPut.ForeColor = Color.Red;
                        JuBuTreadAllNode = TreeViewMenu.SelectedNode;
                        if (JuBuTreadAllNode.NextNode != null)
                        {
                            LastTreeNode = JuBuTreadAllNode.NextNode;
                        }
                        else
                        {
                            TreeNode tnode;
                            tnode = JuBuTreadAllNode;
                            while (!(tnode != null && tnode.NextNode != null))
                            {
                                tnode = tnode.Parent;
                                if (tnode == null)
                                    break;
                            }
                            if (tnode == null)
                            {
                                LastTreeNode = tnode;
                            }
                            else
                            {
                                LastTreeNode = tnode.NextNode;
                            }
                        }
                        btnUpdate.Enabled = false;
                        Thread m_thread;
                        m_thread = new Thread(new ThreadStart(JuBuBeginThread));
                        m_thread.SetApartmentState(ApartmentState.STA);
                        m_thread.Start();
                    }

                }

                else if (ThreadMyTreeNode != null)
                {
                    if (UpdateName != "Busy1")
                    {
                        UpdateName = "Busy";
                        Thread MyThread = new Thread(new ThreadStart(UpdateNews));
                        MyThread.Priority = ThreadPriority.AboveNormal;
                        MyThread.Start();
                    }
                }
            }
            catch (Exception)
            {
                ThreadMyTreeNode = null;
            }

        }
        /// <summary>
        /// 单击鼠标右件来定位该坐标处的节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TreeViewMenu_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                TreeNode tn = TreeViewMenu.GetNodeAt(e.X, e.Y);
                if (tn != null) TreeViewMenu.SelectedNode = tn;

            }
        }
        /// <summary>
        /// 添加RSS频道
        /// </summary>
        /// <param name="Path"></param>
        /// <param name="Name"></param>
        /// <param name="Link"></param>
        void AddRssSite(string Path, string Name, string Link)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(RSS.GetMenuFileUrl());
            XmlNode node = xmlDoc.SelectSingleNode(Path);//追击节点的起始位置
            XmlElement element0 = xmlDoc.CreateElement("channel");//创建一个节点 
            XmlElement element1 = xmlDoc.CreateElement("name");
            XmlElement element2 = xmlDoc.CreateElement("link");
            element1.InnerText = Name;
            element2.InnerText = Link;
            element0.AppendChild(element1);
            element0.AppendChild(element2);
            node.AppendChild(element0);//将所以节点添加到起始位置下
            xmlDoc.Save(RSS.GetMenuFileUrl());//保存到xml文件中              
        }
        /// <summary>
        /// 添加RSS频道按扭事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 添加RSS站点ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ShowAdd();
            toolAddFile.Visible = true;

        }
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            if (!splitContainer2.Panel1Collapsed)
            {
                splitContainer2.Panel1Collapsed = true;
            }
            else
            {
                splitContainer2.Panel1Collapsed = false;
            }
        }
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            if (!splitContainer2.Panel1Collapsed)
            {
                splitContainer2.Panel1Collapsed = true;
            }
            else
            {
                splitContainer2.Panel1Collapsed = false;
            }

        }
        /// <summary>
        /// 双击连接该RSS频道单元
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridViewNewsList_DoubleClick(object sender, EventArgs e)
        {
            try
            {

                if (dataGridViewNewsList.SelectedCells[0].RowIndex < 0)
                {
                    return;
                }
                string Link = dataGridViewNewsList.Rows[dataGridViewNewsList.SelectedCells[0].RowIndex].Cells[5].Value.ToString();
                webBrowserNewsList.Url = new Uri(Link);
                CreateWebSite(Link);
                splitContainer2.Panel2Collapsed = false;
            }
            catch (Exception ee)

⌨️ 快捷键说明

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