官术网_书友最值得收藏!

第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文件。

通過數據庫保存菜單歷史信息的程序。

主站蜘蛛池模板: 康定县| 中江县| 友谊县| 积石山| 许昌县| 景洪市| 南开区| 奉贤区| 嘉鱼县| 萨嘎县| 汽车| 灵璧县| 阳信县| 仁怀市| 泽州县| 喀什市| 卓尼县| 海晏县| 堆龙德庆县| 云和县| 烟台市| 西丰县| 静宁县| 郸城县| 都安| 神木县| 神农架林区| 灌南县| 喀什市| 合川市| 东台市| 德江县| 伊吾县| 成武县| 霍城县| 阳泉市| 肥城市| 广丰县| 西安市| 舒兰市| 丹江口市|