如何使用c#实现记事本

目录

一、记事本简介记事本是一种常用的软件,在微软的Windows中,自带了一个记事本软件,Windows 11下的记事本软件如图1所示。

二、记事本界面设计新建一个Windows窗体应用程序,并命名为“Notepad”。本节介绍记事本程序的界面设计以及界面上各控件的属性设置。

1、打开visual studio 2022,创建新项目,选择项目模板Windows窗体应用 ,填写项目名称NotePad.

 2. 单击Form1窗体,在右下角属性中将Text 修改为"记事本",将"Name"修改为NotePad,将"StartPosition"设为CenterScreen,将"Size"设为600,450,如下图所示

 3、界面设计依次在记事本窗口中放置如下控件

(1)MenuStrip(菜单控件)单击窗体左边会出现工具箱, 找到menustrip ,拖动到窗体中,控件会出现在下方

(2)ToolStrip(工具栏控件)单击窗体左边会出现工具箱, 找到toolstrip ,拖动到窗体中,控件会出现在下方,单击ToolStrip1,将右下角属性中Name改为toolNotepad

(3)RichTextBox(多格式文本框控件) 单击窗体左边会出现工具箱, 找到richtextbox,拖动到窗体中,控件会出现在下方,单击RichTextBox1,将右下角属性中Name改为richNotepad。Anchor属性选择“Top,Bottom,Left,Right”,这样当窗体大小改变时,RichTextBox控件的大小也会跟着改变,如图所示。

(4)StatusStrip(状态栏控件) 添加StatusStrip控件,将其Name属性设为“stsNotepad”,将Dock属性设为“Bottom”再将Anchor属性设为“Bottom,Left,Right”。然后单击Items(collection)右边的...按钮,打开【项集合编辑器】对话框,如图所示。

(5)OpenFileDialog(打开对话框)从工具箱中找到OpenFileDialog直接拖入窗体中 单击属性,当用户单击记事本的【文件】→【打开】菜单项时,使用打开对话框OpenFileDialog打开文件。OpenFileDialog控件的Name属性为“odlgNotepad”,Filter属性设为“RTF文件|*.rtf|所有文件|*.*”。

(6)SaveFileDialog(保存对话框)从工具箱中找到SaveFileDialog直接拖入窗体中 单击属性,当用户单击记事本的【文件】→【保存】(或【另存为】)菜单项时,使用保存对话框SaveFileDialog保存文件。SaveFileDialog控件的Name属性为“sdlgNotepad”,FileName属性改为“无标题”,Filter属性设为“RTF文件|*.rtf”。

(7)FontDialog(字体对话框)从工具箱中找到FontDialog直接拖入窗体中 单击属性

(8)Timer(计时器控件)从工具箱中找到Timer直接拖入窗体中 单击属性

4、编写程序代码首先在代码的通用段声明以下两个公共变量,他们都是布尔型的,“b”用于判断文件是新建的还是从磁盘打开的,“s”用于判断文件是否被保存。

(1)多格式文本框代码(RichTextBox)双击RichTextBox,进入代码区,写入如下代码

(2)菜单代码 1.文件(F)代码

(2)打开(O)

(3)保存(S)

(4)另存为(A)

(5)退出(X)

2、编辑(E)代码

(1)撤销

(2)复制

(3)剪切

(4)粘贴

(5)全选

(6)日期

3、格式(O)代码

(1)自动换行

(2)字体

4、查看(V)代码

(1)工具栏

(2)状态栏

5、关于记事本右键点击解决方案中的NotePad,添加,窗体,选择Windows窗体,命名为frmAbout.cs

 1、界面设计给窗体“frmAbout”添加Label、Button、LinkLabel和控件,按照图信息设置好属性后的程序界面如所示。可以在属性Font中设置字体和大小

2、编写代码(1)确定

三、运行结果

​编辑四、源码地址


一、记事本简介
记事本是一种常用的软件,在微软的Windows中,自带了一个记事本软件,Windows 11下的记事本软件如图1所示。

 

 

这里介绍的记事本,实现了Windows自带的记事本的部分功能外,并且还可以任意更改字体的字体类型、大小和颜色,并在状态栏中显示时间。为了方便用户的操作,还在程序的窗体上放置了一个工具栏,具有文件的新建、打开、保存功能;文字的复制、粘贴、删除功能;字体类型、格式的设置功能;查看日期时间等功能,并且用户可以根据需要显示或者隐藏工具栏和状态栏。

接下来将详细的介绍记事本程序的设计与实现的步骤和方法。

二、记事本界面设计
新建一个Windows窗体应用程序,并命名为“Notepad”。本节介绍记事本程序的界面设计以及界面上各控件的属性设置。

1、打开visual studio 2022,创建新项目,选择项目模板Windows窗体应用 ,填写项目名称NotePad.


出现如下界面

 

 

 2. 单击Form1窗体,在右下角属性中将Text 修改为"记事本",将"Name"修改为NotePad,将"StartPosition"设为CenterScreen,将"Size"设为600,450,如下图所示

 

 

 

 

 3、界面设计
依次在记事本窗口中放置如下控件

(1)MenuStrip(菜单控件)
单击窗体左边会出现工具箱, 找到menustrip ,拖动到窗体中,控件会出现在下方

 

 

 单击menuStrip1,将右下角属性中Name改为MenuNotepad

 

单击 记事本中"请在此处键入" ,依次输入【文件(F)】、【编辑(E)】、【格式(O)】、【查看(V)】和【帮助(H)】

依次点击文件,编辑,格式,查看,帮助,输入以下内容

设置【文件(F)】、【编辑(E)】、【格式(O)】、【查看(V)】和【帮助(H)】的属性找到对应的属性窗口,按照以下表格进行设置

Text属性

Name属性

ShortcutKeys属性

(快捷键)

ShowShortcutKeys属性

文件(&F)

tsmiFile

None

新建(&N)

tsmiNew

Ctrl+N

True

打开(&O)

tsmiOpen

Ctrl+O

True

保存(&S)

tsmiSave

Ctrl+S

True

另存为(&A)

tsmiSaveAs

None

分隔符(用“-”来分隔)

退出(&X)

tsmiClose

None

Text属性

Name属性

ShortcutKeys属性

ShowShortcutKeys属性

编辑(&E)

tsmiEdit

None

撤销(&U)

tsmiUndo

Ctrl+Z

True

分隔符

复制(&C)

tsmiCopy

Ctrl+C

True

剪切(&T)

tsmiCut

Ctrl+X

True

粘贴(&P)

tsmiPaste

Ctrl+V

True

分隔符

全选(&A)

tsmiSelectAll

Ctrl+A

True

日期(&D)

tsmiDate

F5

True

Text属性

Name属性

Check属性

格式(&O)

tsmiFormat

False

自动换行(&W)

tsmiAuto

True

字体(&F)

tsmiFont

False

Text属性

Name属性

Checked属性

查看(&V)

tsmiView

False

工具栏(&T)

tsmiToolStrip

True

状态栏(&S)

tsmiStatusStrip

True

Text属性

Name属性

帮助(&H)

tsmiHelp

关于记事本(&A)

tsmiAbout

到此 菜单栏框架设置完成!

(2)ToolStrip(工具栏控件)
单击窗体左边会出现工具箱, 找到toolstrip ,拖动到窗体中,控件会出现在下方,单击ToolStrip1,将右下角属性中Name改为toolNotepad

点击小三角,再点击插入标准项,如图

再点击小三角,点击编辑项

 

 

(3)RichTextBox(多格式文本框控件) 
单击窗体左边会出现工具箱, 找到richtextbox,拖动到窗体中,控件会出现在下方,单击RichTextBox1,将右下角属性中Name改为richNotepad。Anchor属性选择“Top,Bottom,Left,Right”,这样当窗体大小改变时,RichTextBox控件的大小也会跟着改变,如图所示。

 

 

(4)StatusStrip(状态栏控件)
 添加StatusStrip控件,将其Name属性设为“stsNotepad”,将Dock属性设为“Bottom”再将Anchor属性设为“Bottom,Left,Right”。然后单击Items(collection)右边的...按钮,打开【项集合编辑器】对话框,如图所示。

下拉列表中保留默认的选择“StatusLabel”,然后单击【添加】按钮,依次添加2个StatusLabel,并分别命名为“tssLbl1”和“tssLbl2”,再将tssLbl1的Text属性设为“就绪”, tssLbl2的Text属性设为“显示日期、时间”。

 

(5)OpenFileDialog(打开对话框)
从工具箱中找到OpenFileDialog直接拖入窗体中 单击属性,当用户单击记事本的【文件】→【打开】菜单项时,使用打开对话框OpenFileDialog打开文件。OpenFileDialog控件的Name属性为“odlgNotepad”,Filter属性设为“RTF文件|*.rtf|所有文件|*.*”。

(6)SaveFileDialog(保存对话框)
从工具箱中找到SaveFileDialog直接拖入窗体中 单击属性,当用户单击记事本的【文件】→【保存】(或【另存为】)菜单项时,使用保存对话框SaveFileDialog保存文件。SaveFileDialog控件的Name属性为“sdlgNotepad”,FileName属性改为“无标题”,Filter属性设为“RTF文件|*.rtf”。

(7)FontDialog(字体对话框)
从工具箱中找到FontDialog直接拖入窗体中 单击属性

当用户单击记事本的【格式】→【字体】菜单项时,使用字体对话框FontDialog设置文本字体。FontDialog控件的Name属性为“fdlgNotepad”。

(8)Timer(计时器控件)
从工具箱中找到Timer直接拖入窗体中 单击属性

本章介绍的记事本在状态栏中显示了时钟,这就需要使用一个Timer控件来实现。Timer控件的Name属性设为“tmrNotepad”,Enabled(激活的可行的)属性设为“True”,Interval(间隔,间距,幕间时间)属性设为“1000”,表示1秒种触发一次Tick事件,即1秒钟改变一次时钟。

 最终界面如图

 

4、编写程序代码
首先在代码的通用段声明以下两个公共变量,他们都是布尔型的,“b”用于判断文件是新建的还是从磁盘打开的,“s”用于判断文件是否被保存。

双击窗体,进入代码区填写以下代码

//*************************************************************************
/* 布尔变量b用于判断文件是新建的还是从磁盘打开的,
   true表示文件是从磁盘打开的,false表示文件是新建的,默认值为false*/
bool b = false;
/* 布尔变量s用于判断文件件是否被保存,
   true表示文件是已经被保存了,false表示文件未被保存,默认值为true*/
bool s = true; 
//*************************************************************************

(1)多格式文本框代码(RichTextBox)
双击RichTextBox,进入代码区,写入如下代码

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
      // 文本被修改后,设置s为false,表示文件未保存
      s = false;
}


(2)菜单代码 
1.文件(F)代码

(1)新建(N)

双击新建,写入如下代码

private void tsmiNew_Click(object sender, EventArgs e)
{
    // 判断当前文件是否从磁盘打开,或者新建时文档不为空,并且文件未被保存
    if (b == true || rtxtNotepad.Text.Trim() != "")
    {
        // 若文件未保存
        if (s == false)
        {
            string result;
            result = MessageBox.Show("文件尚未保存,是否保存?", 
                "保存文件", MessageBoxButtons.YesNoCancel).ToString();
            switch (result)
            {
                case "Yes":
                    // 若文件是从磁盘打开的
                    if (b == true)
                    {
                        // 按文件打开的路径保存文件
                        rtxtNotepad.SaveFile(odlgNotepad.FileName);
                    }
                    // 若文件不是从磁盘打开的
                    else if (sdlgNotepad.ShowDialog() == DialogResult.OK)
                    {
                        rtxtNotepad.SaveFile(sdlgNotepad.FileName);
                    }
                    s = true;
                    rtxtNotepad.Text = "";
                    break;
                case "No":
                    b = false;
                    rtxtNotepad.Text = "";
                    break;
            }
        }
    }
}


(2)打开(O)

private void tsmiOpen_Click(object sender, EventArgs e)
{
    if (b == true || rtxtNotepad.Text.Trim() != "")
    {
        if (s == false)
        {
            string result;
            result = MessageBox.Show("文件尚未保存,是否保存?", 
                "保存文件", MessageBoxButtons.YesNoCancel).ToString();
            switch (result)
            {
                case "Yes":
                    if (b == true)
                    {
                        rtxtNotepad.SaveFile(odlgNotepad.FileName);
                    }
                    else if (sdlgNotepad.ShowDialog() == DialogResult.OK)
                    {
                        rtxtNotepad.SaveFile(sdlgNotepad.FileName);
                    }
                    s = true;
                    break;
                case "No":
                    b = false;
                    rtxtNotepad.Text = "";
                    break;
            }
        }
    }
    odlgNotepad.RestoreDirectory = true;
    if ((odlgNotepad.ShowDialog() == DialogResult.OK) && odlgNotepad.FileName != "")
    {
        rtxtNotepad.LoadFile(odlgNotepad.FileName);//打开代码语句
        b = true;
    }
    s = true;
}


(3)保存(S)

private void tsmiSave_Click(object sender, EventArgs e)
{
    // 若文件从磁盘打开并且修改了其内容
    if (b == true && rtxtNotepad.Modified == true)
    {
        rtxtNotepad.SaveFile(odlgNotepad.FileName);
        s = true;
    }
    else if (b == false && rtxtNotepad.Text.Trim() != "" &&
        sdlgNotepad.ShowDialog() == DialogResult.OK)
    {
        rtxtNotepad.SaveFile(sdlgNotepad.FileName);//保存语句
        s = true;
        b = true;
        odlgNotepad.FileName = sdlgNotepad.FileName;
    }
}


(4)另存为(A)

private void tsmiSaveAs_Click(object sender, EventArgs e)
{
    if (sdlgNotepad.ShowDialog() == DialogResult.OK)
    {
        rtxtNotepad.SaveFile(sdlgNotepad.FileName);
        s = true;
    }
}


(5)退出(X)

private void tsmiClose_Click(object sender, EventArgs e)
{
    Application.Exit();//程序结束
}


2、编辑(E)代码

(1)撤销

private void tsmiUndo_Click(object sender, EventArgs e)
{
    rtxtNotepad.Undo();//撤销
}


(2)复制

private void tsmiCopy_Click(object sender, EventArgs e)
{
    rtxtNotepad.Copy();//复制
}


(3)剪切

private void tsmiCut_Click(object sender, EventArgs e)
{
    rtxtNotepad.Cut();//剪切
}


(4)粘贴

private void tsmiPaste_Click(object sender, EventArgs e)
{
    rtxtNotepad.Paste();//粘贴
}


(5)全选

private void tsmiSelectAll_Click(object sender, EventArgs e)
{
    rtxtNotepad.SelectAll();//全选
}


(6)日期

private void tsmiDate_Click(object sender, EventArgs e)
{
    rtxtNotepad.AppendText(System.DateTime.Now.ToString());//显示当前日期
}


3、格式(O)代码

(1)自动换行

private void tsmiAuto_Click(object sender, EventArgs e)
{
    if (tsmiAuto.Checked == false)
    {
        tsmiAuto.Checked = true;            // 选中该菜单项
        rtxtNotepad.WordWrap = true;           // 设置为自动换行
    }
    else
    {
        tsmiAuto.Checked = false;
        rtxtNotepad.WordWrap = false;
    }
}


(2)字体

private void tsmiFont_Click(object sender, EventArgs e)
{
    fdlgNotepad.ShowColor = true;
    if (fdlgNotepad.ShowDialog() == DialogResult.OK)
    {
        rtxtNotepad.SelectionColor = fdlgNotepad.Color;
        rtxtNotepad.SelectionFont = fdlgNotepad.Font;
    }
}


4、查看(V)代码

(1)工具栏

 private void tsmiToolStrip_Click(object sender, EventArgs e)
        {
            Point point;
            if (tsmiToolStrip.Checked == true)
            {
                // 隐藏工具栏时,把坐标设为(0,24),因为菜单的高度为24
                point = new Point(0, 24);
                tsmiToolStrip.Checked = false;
                tlsNotepad.Visible = false;
                // 设置多格式文本框左上角位置
                rtxtNotepad.Location = point;
                // 隐藏工具栏后,增加文本框高度
                rtxtNotepad.Height += tlsNotepad.Height;
            }
            else
            {
                /* 显示工具栏时,多格式文本框左上角位置的位置为(0,49),
                   因为工具栏的高度为25,加上菜单的高度24后为49 */
                point = new Point(0, 49);
                tsmiToolStrip.Checked = true;
                tlsNotepad.Visible = true;
                rtxtNotepad.Location = point;
                rtxtNotepad.Height -= tlsNotepad.Height;
            }
        }


(2)状态栏

private void tsmiStatusStrip_Click(object sender, EventArgs e)
{
    if (tsmiStatusStrip.Checked == true)
    {
        tsmiStatusStrip.Checked = false;
        stsNotepad.Visible = false;
        rtxtNotepad.Height += stsNotepad.Height;
    }
    else
    {
        tsmiStatusStrip.Checked = true;
        stsNotepad.Visible = true;
        rtxtNotepad.Height -= stsNotepad.Height;
    }
}
5、帮助(H)代码

        frmAbout窗体设计将在下一节介绍

private void tsmiAbout_Click(object sender, EventArgs e)
{
    frmAbout ob_FrmAbout = new frmAbout();
    ob_FrmAbout.Show();
}


5、关于记事本
右键点击解决方案中的NotePad,添加,窗体,选择Windows窗体,命名为frmAbout.cs

 

 1、界面设计
给窗体“frmAbout”添加Label、Button、LinkLabel和控件,按照图信息设置好属性后的程序界面如所示。可以在属性Font中设置字体和大小

【关于记事本】窗体和窗体上各控件的属性设置如图所示。

控件类型

控件名称

属性

设置结果

Form

Form2

Name

frmAbout

Text

关于记事本

StartPosition

CenterScreen

MaximizeBox

False

AutoSizeMode

GrowAndShrink

Button

Button1

Name

btnOk

Text

确定

Label

Label1

Text

多功能记事本

LinkLabe

LinkLabel

Text

如有问题,点击这里

 

2、编写代码
(1)确定

private void btnOk_Click(object sender, EventArgs e)
{
     this.Close();
}


(2)LinkLabel

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
      System.Diagnostics.Process.Start("http://www.baidu.com");
}


 (3)依次双击Form1.cs窗口中的工具栏的八个图标

 然后输入如下代码

private void toolsNotepad_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            int n;
            // 变量n用来接收按下按钮的索引号从0开始
            n = toolsNotepad.Items.IndexOf(e.ClickedItem);
            switch (n)
            {
                case 0:
                    新建NToolStripButton_Click(sender, e);
                    break;
                case 1:
                    打开OToolStripButton_Click(sender, e);
                    break;
                case 2:
                    保存SToolStripButton_Click(sender, e);
                    break;
                case 3:
                    打印PToolStripButton_Click(sender, e);
                    break;
                case 4:
                    剪切UToolStripButton_Click(sender, e);
                    break;
                case 5:
                    复制CToolStripButton_Click(sender, e);
                    break;
                case 6:
                    粘贴PToolStripButton_Click(sender, e);
                    break; 
                case 7:
                    帮助LToolStripButton_Click(sender, e);
                    break;
 
            }
        }


(3)计时器代码

双击Form.cs窗口下方trmNotepad,输入代码

private void tmrNotepad_Tick(object sender, EventArgs e)
        {
                tssLb12.Text = System.DateTime.Now.ToString();
        }


三、运行结果


四、源码地址

gitee:

如何使用c#实现记事本 · Issue #I6WHV2 · pjs/12 - Gitee.com

Form1程序如下

namespace Notepad
{
    public partial class frmNotepad : Form
    {
        //*************************************************************************
        /* 布尔变量b用于判断文件是新建的还是从磁盘打开的,
           true表示文件是从磁盘打开的,false表示文件是新建的,默认值为false*/
        bool b = false;
        /* 布尔变量s用于判断文件件是否被保存,
           true表示文件是已经被保存了,false表示文件未被保存,默认值为true*/
        bool s = true;
        //*************************************************************************
        public frmNotepad()
        {
            InitializeComponent();
        }

        private void 粘贴PToolStripMenuItem_Click(object sender, EventArgs e)
        {
            rtxtNotepad.Paste();//粘贴
        }

        private void tsmiNew_Click(object sender, EventArgs e)
        {
            // 判断当前文件是否从磁盘打开,或者新建时文档不为空,并且文件未被保存
            if (b == true || rtxtNotepad.Text.Trim() != "")
            {
                // 若文件未保存
                if (s == false)
                {
                    string result;
                    result = MessageBox.Show("文件尚未保存,是否保存?",
                        "保存文件", MessageBoxButtons.YesNoCancel).ToString();
                    switch (result)
                    {
                        case "Yes":
                            // 若文件是从磁盘打开的
                            if (b == true)
                            {
                                // 按文件打开的路径保存文件
                                rtxtNotepad.SaveFile(odlgNotepad.FileName);
                            }
                            // 若文件不是从磁盘打开的
                            else if (sdlgNotepad.ShowDialog() == DialogResult.OK)
                            {
                                rtxtNotepad.SaveFile(sdlgNotepad.FileName);
                            }
                            s = true;
                            rtxtNotepad.Text = "";
                            break;
                        case "No":
                            b = false;
                            rtxtNotepad.Text = "";
                            break;
                    }
                }
            }
        }

        private void tsmiFile_Click(object sender, EventArgs e)
        {

        }

        private void frmNotepad_Load(object sender, EventArgs e)
        {

        }

        private void rtxtNotepad_TextChanged(object sender, EventArgs e)
        {
            // 文本被修改后,设置s为false,表示文件未保存
            s = false;
        }

        private void tsmiOpen_Click(object sender, EventArgs e)
        {
            if (b == true || rtxtNotepad.Text.Trim() != "")
            {
                if (s == false)
                {
                    string result;
                    result = MessageBox.Show("文件尚未保存,是否保存?",
                        "保存文件", MessageBoxButtons.YesNoCancel).ToString();
                    switch (result)
                    {
                        case "Yes":
                            if (b == true)
                            {
                                rtxtNotepad.SaveFile(odlgNotepad.FileName);
                            }
                            else if (sdlgNotepad.ShowDialog() == DialogResult.OK)
                            {
                                rtxtNotepad.SaveFile(sdlgNotepad.FileName);
                            }
                            s = true;
                            break;
                        case "No":
                            b = false;
                            rtxtNotepad.Text = "";
                            break;
                    }
                }
            }
            odlgNotepad.RestoreDirectory = true;
            if ((odlgNotepad.ShowDialog() == DialogResult.OK) && odlgNotepad.FileName != "")
            {
                rtxtNotepad.LoadFile(odlgNotepad.FileName);//打开代码语句
                b = true;
            }
            s = true;
        }

        private void tsmiSave_Click(object sender, EventArgs e)
        {
            // 若文件从磁盘打开并且修改了其内容
            if (b == true && rtxtNotepad.Modified == true)
            {
                rtxtNotepad.SaveFile(odlgNotepad.FileName);
                s = true;
            }
            else if (b == false && rtxtNotepad.Text.Trim() != "" &&
                sdlgNotepad.ShowDialog() == DialogResult.OK)
            {
                rtxtNotepad.SaveFile(sdlgNotepad.FileName);//保存语句
                s = true;
                b = true;
                odlgNotepad.FileName = sdlgNotepad.FileName;
            }
        }

        private void tsmiSaveAs_Click(object sender, EventArgs e)
        {
            if (sdlgNotepad.ShowDialog() == DialogResult.OK)
            {
                rtxtNotepad.SaveFile(sdlgNotepad.FileName);
                s = true;
            }
        }

        private void tsmiClose_Click(object sender, EventArgs e)
        {
            Application.Exit();//程序结束
        }

        private void tsmiSelectAll_Click(object sender, EventArgs e)
        {
            rtxtNotepad.SelectAll();//全选
        }

        private void tsmiDate_Click(object sender, EventArgs e)
        {
            rtxtNotepad.AppendText(System.DateTime.Now.ToString());//显示当前日期
        }

        private void tsmiUndo_Click(object sender, EventArgs e)
        {

            rtxtNotepad.Undo();//撤销
        }

        private void tsmiCopy_Click(object sender, EventArgs e)
        {
            rtxtNotepad.Copy();//复制
        }

        private void tsmiCut_Click(object sender, EventArgs e)
        {
            rtxtNotepad.Cut();//剪切
        }

        private void tsmiAuto_Click(object sender, EventArgs e)
        {
            if (tsmiAuto.Checked == false)
            {
                tsmiAuto.Checked = true;            // 选中该菜单项
                rtxtNotepad.WordWrap = true;        // 设置为自动换行
            }
            else
            {
                tsmiAuto.Checked = false;
                rtxtNotepad.WordWrap = false;
            }
        }

        private void tsmiFont_Click(object sender, EventArgs e)
        {
            fdlgNotepad.ShowColor = true;
            if (fdlgNotepad.ShowDialog() == DialogResult.OK)
            {
                rtxtNotepad.SelectionColor = fdlgNotepad.Color;
                rtxtNotepad.SelectionFont = fdlgNotepad.Font;
            }
        }

        private void tsmiToolStrip_Click(object sender, EventArgs e)
        {
            Point point;
            if (tsmiToolStrip.Checked == true)
            {
                // 隐藏工具栏时,把坐标设为(0,24),因为菜单的高度为24
                point = new Point(0, 24);
                tsmiToolStrip.Checked = false;
                tlsNotepad.Visible = false;
                // 设置多格式文本框左上角位置
                rtxtNotepad.Location = point;
                // 隐藏工具栏后,增加文本框高度
                rtxtNotepad.Height += tlsNotepad.Height;
            }
            else
            {
                /* 显示工具栏时,多格式文本框左上角位置的位置为(0,49),
                   因为工具栏的高度为25,加上菜单的高度24后为49 */
                point = new Point(0, 49);
                tsmiToolStrip.Checked = true;
                tlsNotepad.Visible = true;
                rtxtNotepad.Location = point;
                rtxtNotepad.Height -= tlsNotepad.Height;
            }
        }

        private void tsmiStatusStrip_Click(object sender, EventArgs e)
        {
            if (tsmiStatusStrip.Checked == true)
            {
                tsmiStatusStrip.Checked = false;
                stsNotepad.Visible = false;
                rtxtNotepad.Height += stsNotepad.Height;
            }
            else
            {
                tsmiStatusStrip.Checked = true;
                stsNotepad.Visible = true;
                rtxtNotepad.Height -= stsNotepad.Height;
            }
        }

        private void tsmiHelp_Click(object sender, EventArgs e)
        {

        }

        private void tsmiAbout_Click(object sender, EventArgs e)
        {
            frmAbout ob_FrmAbout = new frmAbout();
            ob_FrmAbout.Show();
        }

        private void 新建NToolStripButton_Click(object sender, EventArgs e)
        {

        }

        private void 打开OToolStripButton_Click(object sender, EventArgs e)
        {

        }

        private void 保存SToolStripButton_Click(object sender, EventArgs e)
        {

        }

        private void 打印PToolStripButton_Click(object sender, EventArgs e)
        {

        }

        private void 剪切UToolStripButton_Click(object sender, EventArgs e)
        {

        }

        private void 复制CToolStripButton_Click(object sender, EventArgs e)
        {

        }

        private void 粘贴PToolStripButton_Click(object sender, EventArgs e)
        {

        }

        private void 帮助LToolStripButton_Click(object sender, EventArgs e)
        {

        }

        private void tlsNotepad_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            int n;
            // 变量n用来接收按下按钮的索引号从0开始
            n = tlsNotepad.Items.IndexOf(e.ClickedItem);
            switch (n)
            {
                case 0:
                    新建NToolStripButton_Click(sender, e);
                    break;
                case 1:
                    打开OToolStripButton_Click(sender, e);
                    break;
                case 2:
                    保存SToolStripButton_Click(sender, e);
                    break;
                case 3:
                    打印PToolStripButton_Click(sender, e);
                    break;
                case 4:
                    剪切UToolStripButton_Click(sender, e);
                    break;
                case 5:
                    复制CToolStripButton_Click(sender, e);
                    break;
                case 6:
                    粘贴PToolStripButton_Click(sender, e);
                    break;
                case 7:
                    帮助LToolStripButton_Click(sender, e);
                    break;
            }
        }

        private void tssLbl0_Click(object sender, EventArgs e)
        {

        }

        private void tssLbl2_Click(object sender, EventArgs e)
        {

        }

        private void stsNotepad_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }

        private void mnusNotepad_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }

        private void tssLbl1_Click(object sender, EventArgs e)
        {

        }

        private void tmrNotepad_Tick(object sender, EventArgs e)
        {
            tssLbl2.Text = System.DateTime.Now.ToString();
        }
    }
}

Form2程序如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Notepad
{
    public partial class frmAbout : Form
    {
        public frmAbout()
        {
            InitializeComponent();
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {

            System.Diagnostics.Process.Start("http://www.baidu.com");
        }
    }
}

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值