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

📄 mainform.cs

📁 在CSharpNotepad中可以创建和编辑简单文本文档
💻 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;
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 + -