1.新建项目
启动Visual Studio .NET ,在“文件”菜单上,指向“添加”,然后单击“新建项目”打开“新建项目”对话框。 从 Visual C# 项目列表中选择“Windows 应用程序”项目模板。

新建项目成功后会有一个初始表格Form1

选定From1,将其属性“Text”设置成“记事本”
![]() | ![]() |
2.向主窗体添加控件

分别在工具栏中向form中添加一个MenuStrip控件、一个RichTextBox控件、一个OpenFileDialog控件、一个SaveFileDialog控件、一个FontDialog控件。控件属性为

3.为MenuStrip控件设置菜单
设置属性完毕后,为MenuStrip控件设置菜单:“文件”菜单包括“新建”、“打开”、“保存”、“另存为”、“退出”子菜单项。“编辑”菜单包括“撤销”、“重做”、“剪切”、“复制”、“粘贴”、“删除”、“查找”、“替换”等子菜单项。“格式”菜单包括“字体”、“颜色”子菜单项。
如图:三个主菜单和文件的子菜单:


4.为设计窗口编码
设计窗口告一段落后,我们要分别为每个菜单编码了,编码只需要双击将要编码的菜单图案就进入了对应函数,比如上边第二张图,双击“新建”,就可以进入private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)的空函数
- 文件菜单的“新建”菜单
private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
{
txtNote.Text = "";
}
- 文件菜单的“打开”菜单:在Form1的代码窗口的最前端,添加 using System.IO;因为文件的输入输出操作需要用到该命名空间的类和方法。然后双击菜单项“打开”,进入该菜单项的编码窗口,并编写“打开”的单击事件程序
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e) { //添加文本过滤器,(*.txt)显示在文件类型里,中间用|隔开,|后面代表过滤txt以外的其他类型文件,让记事本默认打开.txt文件,所以过滤器的index为前者:1 openFileDialog1.Filter = ""文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"; openFileDialog1.FilterIndex = 1; //是否存储文件路径,在这里是存储,在做动态菜单的时候会让显示曾经加载路径 openFileDialog1.RestoreDirectory = true; //读取文本文件 StreamReader sr = null; if (this.openFileDialog1.ShowDialog() == DialogResult.OK) { sr = new StreamReader(openFileDialog1.FileName,System.Text.Encoding.Unicode); txtNote.Text = sr.ReadToEnd(); sr.Close(); filename = openFileDialog1.FileName; } } - 保存 点击退出按钮或记事本框的×时的保存控制
- 添加全局布尔变量isChange

- 保存另存在sw.Close后边加isChange = false;
- 双击整个编辑form txtNote_TextChanged(object sender, EventArgs e):isChange = true
- 打开Form1_FormClosing(object sender, FormClosingEventArgs e),复制退出代码,加e.canc
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (filename == "")
{
saveFileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
saveFileDialog1.Title = "Save an Text File";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
filename = saveFileDialog1.FileName;
StreamWriter sw = new StreamWriter(filename, false, System.Text.Encoding.Default);
// MessageBox.Show( sw.Encoding.ToString());
if (sw != null)
{
// 创建新文件后,向其中写入测试内容
sw.Write(txtNote.Text);
sw.Close();
isChange = false;
}
}
}
else
{
//直接保存,不显示对话框
StreamWriter sw = new StreamWriter(filename, false, System.Text.Encoding.Default);
if (sw != null)
{
// 创建新文件后,向其中写入测试内容
sw.Write(txtNote.Text);
sw.Close();
isChange = false;
}
}
}
4.退出——退出前要判断是否已经保存文本,如果已经保存就不提示,如果未保存,提示是否保存
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (isChange)
{
DialogResult dr = MessageBox.Show("文本变化,是否保存?", "提示", MessageBoxButtons.YesNoCancel);
if (dr == DialogResult.Yes)
{
//保存
保存ToolStripMenuItem_Click(sender, e);
Application.Exit();
}
if (dr == DialogResult.No)
{
//退出
Application.Exit();
}
}
else
Application.Exit();
}
5.编辑菜单的几个编程
9、编辑做法
private void 复制ToolStripMenuItem_Click(object sender, EventArgs e)
{
Clipboard.SetText(txtNote.SelectedText);
}
private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
{
Clipboard.SetText(txtNote.SelectedText);
txtNote.SelectedText = "";
}
private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)
{
txtNote.SelectedText = Clipboard.GetText();
}
private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e)
{
txtNote.Undo();
}
private void 重做ToolStripMenuItem_Click(object sender, EventArgs e)
{
txtNote.Redo();
}
格式菜单:
private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.fontDialog1.ShowDialog() == DialogResult.OK)
{
txtNote.SelectionFont = fontDialog1.Font;
}
}
private void 颜色ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.colorDialog1.ShowDialog() == DialogResult.OK)
{
txtNote.SelectionColor = colorDialog1.Color;
}
}
6.弹出式菜单
在 “模拟记事本”中要加入有关“编辑”这部分菜单的弹出菜单功能,用鼠标右键单击txtNote时能弹出“剪切”、“复制”、“粘贴”几个菜单项
1.在窗体上放置一个contextMenuStrip控件。名称为contextMenuStrip1。
2.为contextMenuStrip控件创建“剪切”、“复制”、“粘贴”几个菜单项。
3.设置文本框控件txtNote的ContextMenu属性的值为contextMenuStrip1。
4.相同功能编程方法

7.动态菜单:每次打开文件之后可以自动显示之前打开的路径
1.方法是在“文件”下的“退出”菜单项前加两个分隔条。退出按钮右击——插入——Separator,并设置visible属性为FALSE。


2.在窗体的代码窗口的最前端,在public partial class Form1 : Form后面的“{”下,添加
private int n = 0;
3.在设计窗口,双击“打开”菜单项,进入代码窗口,修改原来的程序为下段程序:
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.Filter="文本文件(*.txt)|*.txt|所有文件|(*.*)";
openFileDialog1.FilterIndex=1;
openFileDialog1.RestoreDirectory=true ;
//读取文本文件
StreamReader sr=null;
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
sr = new StreamReader(openFileDialog1.FileName, System.Text.Encoding.Unicode);
txtNote.Text = sr.ReadToEnd();
sr.Close();
//添加动态菜单,显示打开的文件名
n++;
toolStripMenuItem5.Visible = true;
ToolStripMenuItem tool1 = new ToolStripMenuItem();
tool1.Name = "DynMenu" + n.ToString();
tool1.Text = openFileDialog1.FileName;
//将菜单项插入到第一个分隔条后
文件ToolStripMenuItem.DropDownItems.Insert(5, tool1);
//如果显示的文件超过4个,删除第2个分隔条钱的菜单项
if (n > 4)
文件ToolStripMenuItem.DropDownItems.RemoveAt(9);
//动态菜单结束}
}
7.添加新建、打开、保存、复制、剪切、粘贴的工具栏
![]()
创建工具栏的步骤如下:
1.在窗体上添加一个ToolStrip控件,这时,在窗体的菜单下边,自动会出现ToolStrip控件编辑器。
2.单击ToolStrip控件的下拉按钮,在下拉式列表中选择各种按钮。
3.设置每个按钮的名称,或取默认名称。
4.设置每个按钮的Image属性,赋予一个合适的图标。
5.双击工具栏上的每个按钮,进入代码窗口,为该按钮编写事件响应程序。
本文介绍如何使用C#和Visual Studio开发一个简单的记事本应用,涵盖项目创建、界面设计、菜单功能实现及文件操作等内容。



3703

被折叠的 条评论
为什么被折叠?



