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

📄 main.cs

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

namespace NewsReader
{
    public partial class frmMainwindow : Form
    {
        Start start = new Start();
        private int childFormNumber = 0;//打开的Tab页面(窗口)数量
        private string curFile = "";//当前的配置

        public static bool isUntitled = true;//未保存所做的修改True
        public static Dictionary<string, FeedBase> feeds = new Dictionary<string,FeedBase>();
        private Article article = new Article();
        public static Profile profile = new Profile();

        public frmMainwindow()
        {
            this.Visible = false;
            start.Show();
            start.isVis = false;//告诉Start主窗体还未加载完毕,启动特效
            InitializeComponent();
        }

        private void main_Load(object sender, EventArgs e)
        {
            try
            {
                /*初始化窗体内的控件*/
                treeView1.Dock = DockStyle.Fill;
                treeView2.Dock = DockStyle.Fill;
                tctlList.Dock = DockStyle.Fill;
                tctlWebBorowser.Dock = DockStyle.Fill;
                splitContainer1.Dock = DockStyle.Fill;
                newWebBrowser("", "");//显示一个空白网页

                //ProfileManager profm = new ProfileManager();
                //profm.Load();
                //frmMainwindow.feeds = profm.Profile.Feeds;
                this.Visible = true;
                start.isVis = true;//告诉Start主窗体已经加载完毕了,关闭启动特效
            }
            catch (Exception)
            {
                return;
            }
        }

        private void OpenFile(object sender, EventArgs e)
        {
            try
            {
                if (frmMainwindow.isUntitled)
                {
                    DialogResult result = MessageBox.Show("您的当前环境还未保存,点击“是”将保存,按“否”将忽略过!", "保存提示"
                        , MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

                    if (result == DialogResult.Cancel) return;
                    if (result == DialogResult.Yes)//保存当前的环境之后,继续打开工作
                    {
                        tsmiSaveAs_Click(sender, e);
                    }
                }
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
                openFileDialog.Filter = "config.dat|*.dat|所有文件(*.*)|*.*";
                if (openFileDialog.ShowDialog(this) == DialogResult.OK)
                {
                    string FileName = openFileDialog.FileName;

                    ProfileManager profm = new ProfileManager();
                    profm.Load(FileName);
                    frmMainwindow.feeds = profm.Profile.Feeds;
                    frmMainwindow.profile = profm.Profile;
                    curFile = FileName;//记录当前打开的文件名
                    isUntitled = false;//已经保存过
                    foreach (TreeView treeview in tctlList.SelectedTab.Controls)
                    { ViewTreeView(treeview); return; }
                }
            }
            catch (Exception)
            {
                return;
            }
        }

        private void tsmiSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (curFile == "")//如果当前数据未保存到文件,则提示
                {
                    tsmiSaveAs_Click(sender, e);
                    return;
                }//否则直接保存,不提示
                saveToProfile(curFile);
            }
            catch (Exception)
            {
                return;
            }
        }

        private void tsmiSaveAs_Click(object sender, EventArgs e)
        {
            try
            {
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
                saveFileDialog.Filter = "config.dat|*.dat|所有文件(*.*)|*.*";
                if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
                {
                    string FileName = saveFileDialog.FileName;//获取文件名
                    saveToProfile(FileName);
                }
            }
            catch (Exception)
            {
                return;
            }
        }
        /// <summary>
        /// 实现保存到filename指定的文件里
        /// </summary>
        /// <param name="filename"></param>
        private void saveToProfile(string filename)
        {
            try
            {
                profile.Feeds = feeds;  //书签列表
                ProfileManager profm = new ProfileManager();
                profm.Profile = profile;    //系统配置对象
                profm.Save(filename);       //将系统配置对象保存到FileName指定的文件里

                curFile = filename;//记录当前打开的文件名
                frmMainwindow.isUntitled = false;//已经保存过
                this.Text = "新闻快客";
            }
            catch (Exception)
            {
                return;
            }
        }

        private void ExitToolsStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void CutToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // TODO: 使用 System.Windows.Forms.Clipboard 将所选的文本或图像插入到剪贴板
        }

        private void CopyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // TODO: 使用 System.Windows.Forms.Clipboard 将所选的文本或图像插入到剪贴板
        }

        private void PasteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // TODO: 使用 System.Windows.Forms.Clipboard.GetText() 或 System.Windows.Forms.GetData 从剪贴板中检索信息。
        }

        private void ToolBarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            toolStrip.Visible = toolBarToolStripMenuItem.Checked;
        }

        private void StatusBarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            statusStrip.Visible = statusBarToolStripMenuItem.Checked;
        }

        /// <summary>
        /// 显示或关闭地址栏
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsmiUrlBar_Click(object sender, EventArgs e)
        {
            try
            {
                if (tsmiUrlBar.CheckState == CheckState.Checked)
                {
                    tsUrlADD.Visible = false;
                    tsmiUrlBar.CheckState = CheckState.Unchecked;
                }
                else
                {
                    tsUrlADD.Visible = true;
                    tsmiUrlBar.CheckState = CheckState.Checked;
                }
            }
            catch (Exception)
            {
                return;
            }
        }

        /// <summary>
        /// 关闭所有的Tab页,关闭所有已经打开的网页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CloseAllToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                foreach (TabPage childForm in tctlWebBorowser.TabPages)
                {
                    WebBrowser curWebb = (WebBrowser)childForm.Controls[0];
                    curWebb.Stop();
                    curWebb.Dispose();
                    tctlWebBorowser.TabPages.Remove(childForm);
                    childFormNumber--;
                }
                GC.Collect();
                tctlWebBorowser.Visible = false;
            }
            catch (Exception)
            {
                return;
            }
        }

        private void FeedToolStripMenuItem_Click(object sender, EventArgs e)
        {
            tctlList.Visible = FeedToolStripMenuItem.Checked;
        }

        private void StaticFeedToolStripMenuItem_Click(object sender, EventArgs e)
        {
            statusStrip.Visible = StaticFeedToolStripMenuItem.Checked;
        }

        private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
        {
            about about = new about();
            about.Show();
        }

        private void addtoolStripButton_Click(object sender, EventArgs e)
        {
            try
            {
                channel frmChannel = new channel();
                frmChannel.ShowDialog();
                foreach (TabPage tabpage in tctlList.TabPages)
                {
                    foreach (TreeView treeview in tabpage.Controls)
                    { ViewTreeView(treeview); return; }
                }
            }
            catch (Exception)
            {
                return;
            }
        }

        /// <summary>
        /// 打开站点,浏览网页,阅读文章
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsmiBWeb_Click(object sender, EventArgs e)
        {
            try
            {
                TreeNode node = new TreeNode();
                TreeNode pnode = new TreeNode();
                if (tctlList.SelectedTab.Text == "动态书签")
                {
                    node = treeView1.SelectedNode;//动态书签的选择的节点
                }
                else
                {
                    node = treeView2.SelectedNode;//静态书签的被选择的节点
                }
                node.ImageIndex = 0;
                pnode = node.Parent;//选择的子节点的父节点

                string pkey;//根节点的名称
                string key = node.Text.Trim();//当前节点的名称
                string url = "";
                string feedtype;//节点的类型

                if (node.Tag.ToString() == "rss" || node.Tag.ToString() == "feed")//如果是"RSS"或"ATOM"类型的节点
                {
                    stmiOpen_Click(sender, e);
                    return;
                }
                else if (pnode != null)//如果是子节点的"HTML"类型
                {
                    pkey = pnode.Text.Trim();//父节点的名称
                    frmMainwindow.feeds[pkey].Articles[key].Clicks++;
                    url = frmMainwindow.feeds[pkey].Articles[key].Url;
                    feedtype = frmMainwindow.feeds[pkey].Articles[key].Feedtype;
                }
                else
                {
                    ((FeedBase)node.Tag).Clicks++;
                    url = ((FeedBase)node.Tag).Url;
                    feedtype = ((FeedBase)node.Tag).Feedtype;
                }

                tctlWebBorowser.Visible = true;
                /*先在窗口中查找是否已经打开,如果没有打开则先找是否有空白的页面*/
                foreach (TabPage tabpage in tctlWebBorowser.TabPages)
                {

                    if (tabpage.Text == key)//如果已经打开,则将它选中
                    {
                        tctlWebBorowser.SelectTab(tabpage);
                        tstbUrl.Text = url;
                        node.ImageIndex = 1;
                        return;
                    }

                    if (tabpage.Text == "NewPage")//是否有空白页,如果有
                    {
                        /*获取tabpage中的WebBrowser对象,并指定URL地址*/
                        foreach (WebBrowser webb in tabpage.Controls)
                        {
                            //webb.Url = new Uri(url);
                            webb.Navigate(new Uri(url),false);
                            this.Text = "新闻快客" + (isUntitled ? "*" : "") + webb.DocumentTitle;
                            tstbUrl.Text = url;
                            tabpage.Text = key;
                            node.ImageIndex = 1;
                            return;
                        }
                    }
                }
                if (feedtype == "html")//如果是网页,则直接打开指向的地址
                {
                    /*新建WebBrowser页面,再显示新闻网页*/
                    newWebBrowser(key, url);
                    tstbUrl.Text = url;
                }
                node.ImageIndex = 1;
            }
            catch (Exception)
            {
                return;
            }
        }

        /// <summary>
        /// 展开子节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void stmiOpen_Click(object sender, EventArgs e)
        {
            try
            {
                foreach (TreeView treeview in tctlList.SelectedTab.Controls)
                {
                    //try
                    {
                        TreeNode node = treeview.SelectedNode;
                        string key = node.Text;
                        frmMainwindow.feeds[key].FillArticles();
                        //if (true)//如果返回True,表示填充格式正确
                        //{
                        frmMainwindow.feeds[key].Clicks++;
                        //把文章列到treeview
                        node.Nodes.Clear();

                        foreach (Article obj in frmMainwindow.feeds[key].Articles.Values)
                        {
                            TreeNode sub = new TreeNode();

⌨️ 快捷键说明

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