📄 main.cs
字号:
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 + -