第1章 窗體與界面設計
實例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文件。
◇ 通過數據庫保存菜單歷史信息的程序。
推薦閱讀
- iOS Game Programming Cookbook
- 深入理解Bootstrap
- Java EE 6 企業級應用開發教程
- Learning Informatica PowerCenter 10.x(Second Edition)
- 云原生Spring實戰
- oreilly精品圖書:軟件開發者路線圖叢書(共8冊)
- FLL+WRO樂高機器人競賽教程:機械、巡線與PID
- Web程序設計(第二版)
- 表哥的Access入門:以Excel視角快速學習數據庫開發(第2版)
- Building RESTful Python Web Services
- RSpec Essentials
- Android Wear Projects
- C#程序設計教程(第3版)
- Scratch3.0趣味編程動手玩:比賽訓練營
- 交互式程序設計(第2版)