C#实现记事本功能

这篇博客介绍了如何使用C#编程实现记事本功能,包括menustrip1菜单选项,openfiledialog1打开文件,savefiledialog1保存文件,以及fontdialog1字体设置。通过实例展示了C#窗体控件的组合应用,帮助读者更好地理解和掌握这些控件的使用。
摘要由CSDN通过智能技术生成

控件说明:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

menustrip1为菜单选项,openfiledialog1为打开文件,savefiledialog1为保存文件,fontdialog1为字体控件。

运行截图:

代码部分(加粗为主要代码):
namespace notepad
{
public partial class Form1 : Form
{

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

    public Form1()
    {
        InitializeComponent();
    }

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

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

    private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (b == true || richTextBox1.Text.Trim() != "")
        {
            if (s == false)
            {
                string result;
                result = MessageBox.Show("文件尚未保存,是否保存?","保存文件", MessageBoxButtons.YesNoCancel).ToString();
                switch (result)
                {
                    case "Yes":
                        if (b == true)
                        {
                            //richTextBox1.SaveFile(openFileDialog1.FileName);
                            **StreamWriter wt = new StreamWriter(openFileDialog1.FileName);
                            wt.Write(richTextBox1.Text);
                            wt.Close();**
                        }
                        else if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                        {
                            // richTextBox1.SaveFile(saveFileDialog1.FileName);
                            StreamWriter wt = new StreamWriter(saveFileDialog1.FileName);
                            wt.Write(richTextBox1.Text);
                            wt.Close();
                        }
                        s = true;
                        break;
                    case "No":
                        b = false;
                        richTextBox1.Text = "";
                        break;
                }
            }
        }
        openFileDialog1.RestoreDirectory = true;
        if ((openFileDialog1.ShowDialog() == DialogResult.OK) && openFileDialog1.FileName != "")
        {
            //richTextBox1.LoadFile(openFileDialog1.FileName);//打开代码语句
            string path = openFileDialog1.FileName;
            //通用编码
            StreamReader sr = new StreamReader(path, Encoding.UTF8);
            //读取数据流
            string text = sr.ReadToEnd();
            richTextBox1.Text = text;
            //将打开的路径写入当前窗体的text属性中
            this.Text = path;
            sr.Close();
            b = true;
        }
        s = true;
    }

    private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        //由于这个没有改Name属性,所以和图片不太一样,对照就行
        // 若文件从磁盘打开并且修改了其内容
        if (b == true && richTextBox1.Modified == true)
        {
            //richTextBox1.SaveFile(openFileDialog1.FileName);
            StreamWriter wt = new StreamWriter(this.Text);
            wt.Write(richTextBox1.Text);
            wt.Close();
            s = true;
        }
        else if (b == false && richTextBox1.Text.Trim() != "" && saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            //richTextBox1.SaveFile(saveFileDialog1.FileName);//保存语句
            **StreamWriter wt = new StreamWriter(saveFileDialog1.FileName);
            wt.Write(richTextBox1.Text);
            wt.Close();**
            s = true;
            b = true;
            openFileDialog1.FileName = saveFileDialog1.FileName;
        }
    }

    private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            // richTextBox1.SaveFile(saveFileDialog1.FileName);
            StreamWriter wt = new StreamWriter(saveFileDialog1.FileName);
            wt.Write(richTextBox1.Text);
            wt.Close();
            s = true;
        }
    }

    **private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }
    private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        richTextBox1.Undo();//撤销
    }
    private void 复制ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        richTextBox1.Copy();//复制
    }
    private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        richTextBox1.Paste();//粘贴
    }
    private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        richTextBox1.Cut();//剪切
    }
    private void 全选ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        richTextBox1.SelectAll();//全选
    }**

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

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

    private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        fontDialog1.ShowColor = true;
        if (fontDialog1.ShowDialog() == DialogResult.OK)
        {
            richTextBox1.SelectionColor = fontDialog1.Color;
            richTextBox1.SelectionFont = fontDialog1.Font;
        }
    }

    private void 关于记事本ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        frmAbout ob_FrmAbout = new frmAbout();
        ob_FrmAbout.Show();
    }
}

}
运行效果:

在这里插入图片描述
在这里插入图片描述
小结:C#窗体控件可以组合来使用以完成一系列相关操作,借次机会熟悉了很多控件的功能及其用法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值