C#作业二——记事本

C#作业二——记事本

一、程序设计题:使用C#窗体应用实现记事本

二、功能说明

实现了记事本的主要功能,如下。

(1)文件:新建、保存、打开、另存为和退出;

(2)编辑:撤销、复制、剪切、粘贴、全选以及日期;

(3)格式:自动换行、设置字体;

(4)查看:状态栏显示;

(5)帮助:关于记事本。

其中部分操作实现了快捷键以及工具栏图标操作。点击关于记事本会跳出一个新窗口供用户操作。

三、核心代码

主窗口:

public partial class frmNotepad : Form
{
    bool b = false;
    bool s = true;
    public frmNotepad()
    {
        InitializeComponent();
    }

    private void rtxtNotepad_TextChanged(object sender, EventArgs e)
    {
        s = false;
    }

    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 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)
    {//由于这个没有改Name属性,所以和图片不太一样,对照就行
     // 若文件从磁盘打开并且修改了其内容
        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 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 tsmiPaste_Click(object sender, EventArgs e)
    {
        rtxtNotepad.Paste();//粘贴
    }

    // 【全选】菜单代码
    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 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 tsmiAbout_Click(object sender, EventArgs e)
    {
        frmAbout ob_FrmAbout = new frmAbout();
        ob_FrmAbout.Show();
    }

    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 tmrNotepad_Tick(object sender, EventArgs e)
    {
        tssLbl2.Text = System.DateTime.Now.ToString();
    }

    private void tlsNotepad_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
    {
        int n;
        // 变量n用来接收按下按钮的索引号从0开始
        n = tlsNotepad.Items.IndexOf(e.ClickedItem);
        switch (n)
        {
            case 0:
                tsmiNew_Click(sender, e);
                break;
            case 1:
                tsmiOpen_Click(sender, e);
                break;
            case 2:
                tsmiSave_Click(sender, e);
                break;

            case 3:
                tsmiCut_Click(sender, e);
                break;

            case 4:
                tsmiCopy_Click(sender, e);
                break;

            case 5:
                tsmiPaste_Click(sender, e);
                break;
            case 6:
                tsmiAbout_Click(sender, e);
                break;
        }
    }
}

关于记事本窗口:

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");
    }
}

四、运行结果

在这里插入图片描述

五、Clone地址

gitee仓库地址:https://gitee.com/zzjavac/csharp_work.git

项目名:work_2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值