📄 mainform.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Printing;
using Custom.Windows.Forms;
namespace CSharpNotepad
{
public partial class mainForm : Form
{
#region 全局变量
public childForm currentForm; //标记当前活动的子窗口
public int count = 0; //记录打开过的文档数量
public string newfileType = ".rtf"; //新建立的文档类型,获取newfileForm的返回值
public string currentFontFamilyName = null; //记录当前文本字体
public float currentFontSize = 0.0f; //记录当前文本字号
public TabPage page;
#endregion
#region 构造函数
public mainForm()
{
InitializeComponent();
}
#endregion
#region 其他方法
public void SetCurrentFont()
{
this.tscbFontFamilyName.Text = this.currentForm.currentFont.Name;
this.tscbFontSize.Text = this.currentForm.currentFont.Size.ToString();
this.tsbBold.Checked = this.currentForm.currentFont.Bold;
this.tsbItalic.Checked = this.currentForm.currentFont.Italic;
this.tsbUnderLine.Checked = this.currentForm.currentFont.Underline;
}
public void SetCurrentAlignment()
{
this.LeftAlign.Checked = false;
this.MiddleAlign.Checked = false;
this.RightAlign.Checked = false;
switch (this.currentForm.currentAlignment)
{
case HorizontalAlignment.Left:
this.LeftAlign.Checked = true;
break;
case HorizontalAlignment.Center:
this.MiddleAlign.Checked = true;
break;
case HorizontalAlignment.Right:
this.RightAlign.Checked = true;
break;
}
}
public void CheckActiveMdiChild()
{
if (this.tabControl1.TabCount == 0 || this.MdiChildren.Length == 0)
{
#region 菜单栏
保存ToolStripMenuItem.Enabled = false;
另存为ToolStripMenuItem.Enabled = false;
打印设置ToolStripMenuItem.Enabled = false;
打印预览ToolStripMenuItem.Enabled = false;
打印ToolStripMenuItem.Enabled = false;
撤消ToolStripMenuItem.Enabled = false;
恢复ToolStripMenuItem.Enabled = false;
剪切ToolStripMenuItem.Enabled = false;
复制ToolStripMenuItem.Enabled = false;
粘贴ToolStripMenuItem.Enabled = false;
删除ToolStripMenuItem.Enabled = false;
查找ToolStripMenuItem.Enabled = false;
替换ToolStripMenuItem.Enabled = false;
全选ToolStripMenuItem.Enabled = false;
时间和日期ToolStripMenuItem.Enabled = false;
自动换行AToolStripMenuItem.Enabled = false;
字体ToolStripMenuItem.Enabled = false;
颜色ToolStripMenuItem.Enabled = false;
项目符号样式ToolStripMenuItem.Enabled = false;
段落ToolStripMenuItem.Enabled = false;
左对齐ToolStripMenuItem.Enabled = false;
居中ToolStripMenuItem.Enabled = false;
右对齐ToolStripMenuItem.Enabled = false;
显示比例ToolStripMenuItem.Enabled = false;
层叠显示ToolStripMenuItem.Enabled = false;
水平排列ToolStripMenuItem.Enabled = false;
垂直排列ToolStripMenuItem.Enabled = false;
#endregion
#region 工具栏
保存SToolStripButton.Enabled = false;
打印PToolStripButton.Enabled = false;
打印预览VToolStripButton.Enabled = false;
剪切UToolStripButton.Enabled = false;
复制CToolStripButton.Enabled = false;
粘贴PToolStripButton.Enabled = false;
撤消UToolStripButton.Enabled = false;
恢复RToolStripButton.Enabled = false;
tscbDisplayRatio.Enabled = false;
#endregion
#region 格式栏
tscbFontFamilyName.Enabled = false;
tscbFontSize.Enabled = false;
tsbBold.Enabled = false;
tsbItalic.Enabled = false;
tsbUnderLine.Enabled = false;
LeftAlign.Enabled = false;
MiddleAlign.Enabled = false;
RightAlign.Enabled = false;
tssbFontColor.Enabled = false;
tsbProject.Enabled = false;
#endregion
return;
}
else
{
#region 菜单栏
保存ToolStripMenuItem.Enabled = true;
另存为ToolStripMenuItem.Enabled = true;
打印设置ToolStripMenuItem.Enabled = true;
打印预览ToolStripMenuItem.Enabled = true;
打印ToolStripMenuItem.Enabled = true;
撤消ToolStripMenuItem.Enabled = true;
恢复ToolStripMenuItem.Enabled = true;
剪切ToolStripMenuItem.Enabled = true;
复制ToolStripMenuItem.Enabled = true;
粘贴ToolStripMenuItem.Enabled = true;
删除ToolStripMenuItem.Enabled = true;
查找ToolStripMenuItem.Enabled = true;
替换ToolStripMenuItem.Enabled = true;
全选ToolStripMenuItem.Enabled = true;
时间和日期ToolStripMenuItem.Enabled = true;
自动换行AToolStripMenuItem.Enabled = true;
字体ToolStripMenuItem.Enabled = true;
颜色ToolStripMenuItem.Enabled = true;
项目符号样式ToolStripMenuItem.Enabled = true;
段落ToolStripMenuItem.Enabled = true;
左对齐ToolStripMenuItem.Enabled = true;
居中ToolStripMenuItem.Enabled = true;
右对齐ToolStripMenuItem.Enabled = true;
显示比例ToolStripMenuItem.Enabled = true;
层叠显示ToolStripMenuItem.Enabled = true;
水平排列ToolStripMenuItem.Enabled = true;
垂直排列ToolStripMenuItem.Enabled = true;
#endregion
#region 工具栏
保存SToolStripButton.Enabled = true;
打印PToolStripButton.Enabled = true;
打印预览VToolStripButton.Enabled = true;
剪切UToolStripButton.Enabled = true;
复制CToolStripButton.Enabled = true;
粘贴PToolStripButton.Enabled = true;
撤消UToolStripButton.Enabled = true;
恢复RToolStripButton.Enabled = true;
tscbDisplayRatio.Enabled = true;
#endregion
#region 格式栏
tscbFontFamilyName.Enabled = true;
tscbFontSize.Enabled = true;
tsbBold.Enabled = true;
tsbItalic.Enabled = true;
tsbUnderLine.Enabled = true;
LeftAlign.Enabled = true;
MiddleAlign.Enabled = true;
RightAlign.Enabled = true;
tssbFontColor.Enabled = true;
tsbProject.Enabled = true;
#endregion
return;
}
}
public int CurrentFormIndexOf()
{ //查询当前子窗口在MdiChildren中的索引
int i;
for (i = 0; i < this.MdiChildren.Length; ++i)
{
if (this.currentForm == (childForm)this.MdiChildren[i])
break;
}
return i;
}
private void MainForm_Load(object sender, EventArgs e)
{
this.mdiClientController1.AutoScroll = false; //禁用主窗口的滚动条,因为默认的为无效
this.tabControl1.Height = 0;
this.tbCurrentFormClose.Height = 0;
this.CheckActiveMdiChild(); // 设置控件的可见性
this.GetDisplayRatio(); // 获取显示比例数据
this.GetFontFamilyNames(); // 获取字体数据
this.GetFontSize(); // 获取字号数据
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
int count = this.MdiChildren.Length - 1;
for (int i = count; i >= 0; i--)
{
this.MdiChildren[i].Close();
}
/*
childForm arrChildren = (childForm[])this.MdiChildren;
for (int i = 0; i < MdiChildren.Length; i++)
{
if (arrChildren[i].docHasChanged)
{
string strask = "文件 " + arrChildren[i].fileName +" 的文字已经改变。\n想保存文件吗?";
DialogResult asksave = MessageBox.Show(strask, "CSharpNotepad", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
if (asksave == DialogResult.Yes)
{
this.currentForm = arrChildren[i];
this.保存ToolStripMenuItem_Click(sender, e);
arrChildren[i].Close();
}
else if (asksave == DialogResult.No)
{
Application.Exit();
}
else if (asksave == DialogResult.Cancel)
{
return;
}
}
else if (!arrChildren[i].docHasChanged)
{
arrChildren[i].Close();
}
}*/
}
private void MainForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Insert)
{
string str = this.toolStripStatusInsertOrOver.Text;
this.toolStripStatusInsertOrOver.Text = (str.Equals("插入")) ? "覆盖" : "插入";
}
}
private void MainForm_MdiChildActivate(object sender, EventArgs e)
{
//获取当前激活窗口
this.currentForm = (childForm)this.ActiveMdiChild;
if (this.currentForm != null)
{
//comboBox_scale.Text = string.Format("{0:G3}%", currentdoc.richTextBox1.ZoomFactor * 100);//当前窗口的阅读比例
}
this.tabControl1.SelectedIndex = CurrentFormIndexOf();
}
#endregion
#region TabControl控件
private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e)
{ //通过单击tabPage激活子窗口
if (this.tabControl1.SelectedIndex == -1)
return;
this.MdiChildren[this.tabControl1.SelectedIndex].Activate();
}
private void tabControl1_DoubleClick(object sender, System.EventArgs e)
{ //双击关闭该文档
if (this.currentForm != null)
{
this.currentForm.Close();
}
}
public void NewTabPage()
{ //新建文档时创建一个标签页
this.tabControl1.Height = 19;
this.tbCurrentFormClose.Height = 17;
this.page = new TabPage(this.currentForm.Text);
this.page.Parent = this.tabControl1;
}
public void NewTabPage(string FileName)
{ //打开文档时创建一个标签页
this.tabControl1.Height = 19;
this.tbCurrentFormClose.Height = 17;
this.page = new TabPage(this.currentForm.Text);
this.page.Parent = this.tabControl1;
this.page.Text = FileName;
}
private void ReSetTabPageName(int CurrentFormIndexOf, string FileName)
{ //“另存为”后修改标签页
tabControl1.SelectedIndex = CurrentFormIndexOf;
tabControl1.SelectedTab.Text = FileName;
}
private void tbCurrentFormClose_Click(object sender, EventArgs e)
{ //单击关闭按钮关闭该文档
if (this.currentForm != null)
{
this.currentForm.Close();
}
}
#endregion
#region 窗体和文本框接受拖进来的数据的事件处理
private void MainForm_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Link;
else
e.Effect = DragDropEffects.None;
}
public void MainForm_DragDrop(object sender, DragEventArgs e)
{
// 创建一个子窗口对象,用来实现打开一个文档,并设置该子窗口为活动窗口
childForm childForm = new childForm(this);
childForm.filePath = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); ;
FileInfo finfo = new FileInfo(childForm.filePath);
childForm.fileName = finfo.Name;
childForm.fileType = finfo.Extension;
childForm.isNewDoc = false;
if (finfo.Extension == ".rtf")
{
childForm.richTextBox1.LoadFile(childForm.filePath, RichTextBoxStreamType.RichText);
childForm.Icon = Properties.Resources.RtfIcon;
}
else if (finfo.Extension == ".txt")
{
childForm.richTextBox1.LoadFile(childForm.filePath, RichTextBoxStreamType.PlainText);
childForm.Icon = Properties.Resources.TxtIcon;
}
else
{
MessageBox.Show("不能打开此格式的文件,请检查后再试!", "Notepad", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
childForm.Name = childForm.fileName;
childForm.Text = childForm.fileName;
childForm.MdiParent = this;
childForm.Show();
this.currentForm = childForm; //设置当前子窗口为活动窗口
this.NewTabPage(childForm.fileName);//新建标签页
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -