C#开发案例精粹
上QQ阅读APP看书,第一时间看更新

第1章 窗体与界面设计

bt2-L 实例001 带历史信息的菜单

实例说明

在开发图纸管理软件时,要求在菜单上记录用户最近打开的档案或图纸文件,以方便下次使用。如图1.1所示,单击“文件”菜单下的“打开”菜单项,可打开需要查阅的图纸文件。下次运行该软件时,上次打开的图纸文件的文件名已经被记录到“文件”菜单的历史菜单项中,选择该菜单项,即可打开相应的图纸文件。

图1.1 带历史信息的菜单

技术要点

将在菜单中最近打开的文件的路径保存到事先建立的INI文件中,软件启动时读取INI文件中的数据建立数组菜单,即可实现显示带历史信息的菜单的功能。

意:要建立一个带历史信息的菜单,必须首先添加一个MenuStrip控件,并将主窗体的IsMdiContainer属性设为true。

实现过程

01 新建一个项目,将其命名为MenuHistory,默认窗体为Form1。

02 向Form1窗体添加MenuStrip控件,同时向Form1窗体添加OpenFileDialog控件。创建一个“文件”主菜单,在其下面创建“打开”“关闭所有”“退出”等菜单项。

03 主要代码。

将打开的文件的路径写入INI文件的实现代码如下:

01   private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
02   {
03       openFileDialog1.FileName = "";          //设定打开文件对话框的初始内容为空
04       this.openFileDialog1.ShowDialog();      //显示打开文件对话框
05       //定义一个以一种特定编码向流中写入数据的对象
06       StreamWriter s = new StreamWriter(address + "\\Menu.ini", true); 
07       s.WriteLine(openFileDialog1.FileName);  //写入INI文件
08       s.Flush();           //清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流
09       s.Close();                              //关闭当前的StreamWriter对象和基础流
10       ShowWindows(openFileDialog1.FileName);  //调用自定义方法ShowWindows
11   }

读取INI文件并将信息加入菜单的实现代码如下:

01   private void Form1_Load(object sender, EventArgs e)
02   {
03       //定义一个以一种特定编码从字节流中读取字符的对象
04       StreamReader sr = new StreamReader(address + "\\Menu.ini"); 
05       //定义一个int型变量i并为其赋值
06       int i = this.文件ToolStripMenuItem.DropDownItems.Count - 2; 
07       while (sr.Peek() >= 0)                  //读取INI文件
08       {
09           //定义一个ToolStripMenuItem对象
10           ToolStripMenuItem menuitem = new ToolStripMenuItem(sr.ReadLine());  
11           //向菜单中添加内容
12           this.文件ToolStripMenuItem.DropDownItems.Insert(i, menuitem); 
13           i++;                         //int型变量i递增
14           //为菜单中的菜单项生成处理程序
15           menuitem.Click += new EventHandler(menuitem_Click); 
16               }
17               sr.Close();                    //关闭当前的StreamReader对象和基础流
18           }

举一反三

根据本实例,读者可以开发以下程序。

记录用户操作菜单日志的程序。在用户单击菜单项时,把用户、菜单命令和菜单对应功能写入保存菜单日志的INI文件。如果需要查看日志,只需打开INI文件。

通过数据库保存菜单历史信息的程序。