2.6 案例分析6 创建简单的记事本

2.6.1 案例描述

本节介绍如何创建简单的记事本程序。

2.6.2 案例分析

合理使用I/O文件操作。

2.6.3 案例实现与技巧

① 首先,运行Visual Studio 2005,创建名为Notepad的Windows应用程序。

② 向窗体中拖曳一个MenuStrip控件,并在空白处添加“文件”菜单,在此菜单下新建5个下拉菜单,其Text属性分别为“新建”、“打开”、“保存”、“另存为”、“-”、“退出”。

③ 向窗体中添加“格式”菜单。在此菜单下新建两个下拉菜单,其Text属性分别为“自动换行”、“字体”。

④ 在窗体里添加一个RichTextBox控件,在“属性”窗口中修改属性“Dock”为“Fill”。

⑤ 在Form1添加如下变量:

private bool dirty = false;
private string filepath = "";

⑥ 添加如下方法:

private void MySaving()
{
    if (dirty)
    {
        if (MessageBox.Show("需要保存文件吗?","提示框",MessageBoxButtons. YesNo) == DialogResult.Yes)
        {
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                dirty = false;
                if (filepath.Length == 0)
                {
                    filepath = saveFileDialog1.FileName;
                }
                StreamWriter sTmp = new StreamWriter(filepath);
                sTmp.Write(richTextBox1.Text);
                sTmp.Flush();
                sTmp.Close();
            }
        }
    }
}

⑦ 双击“新建”菜单,在事件响应程序里添加如下代码:

private bool dirty = false;
private string filepath = "";

⑧ 双击“打开”菜单,在事件响应程序里添加如下代码:

MySaving();
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        dirty = false;
        StreamReader sTmp = new StreamReader(openFileDialog1.FileName,System.Text.Encoding.ASCII);
        filepath = openFileDialog1.FileName; richTextBox1.Text = "";
        richTextBox1.Text = sTmp.ReadToEnd();
    }

⑨ 双击“保存”菜单,在事件响应程序里添加如下代码:

MySaving();

⑩ 双击“另存为”菜单,在事件响应程序里添加如下代码:

MySaving();

⑪ 双击“退出”菜单,在事件响应程序里添加如下代码:

MySaving();
if (dirty == false)
    Close();

⑫ 双击“自动换行”菜单,在事件响应程序里添加如下代码:

if (richTextBox1.WordWrap == true)
{
    richTextBox1.WordWrap = false;
    wordwrapToolStripMenuItem.Checked = false;
}
else
{
    richTextBox1.WordWrap = true;
    wordwrapToolStripMenuItem.Checked = true;
}

⑬ 双击“字体”菜单,在事件响应程序里添加如下代码:

if (fontDialog1.ShowDialog() == DialogResult.OK)
{
    richTextBox1.Font = fontDialog1.Font;
}

⑭ 双击“关于记事本”菜单,在事件响应程序里添加如下代码:

MessageBox.Show("记事本实例1.0版","关于记事本");

⑮ 程序运行结果如图2-15、图2-16所示。

图2-15 程序运行结果(一)

图2-16 程序运行结果(二)