簡明對于VS2005 菜單的一些使用問題
VS2005 菜單在對原來的項目進行升級時,并不會將主菜單的MainMenu類自動更改為MenuStrip類,當(dāng)然,此時你可以將原來的主菜單刪除,重新為VS2005加一些VS2005 菜單選項,添加一個MenuStrip的主菜單。
這對于一個有大量菜單項的主菜單,工作量是很大的,且容易出錯,我們按照下面的步驟進行替換操作:
1、切換到主菜單定義的文件中和實現(xiàn)的文件中。
2、選擇系統(tǒng)控件定義(也就是private System.Windows.Forms.MenuItem menuItem1;等這一部分)部分和
實現(xiàn)部分(也就是#region 設(shè)計器生成的代碼所折疊的區(qū)域)。
3、按Ctrl+H彈出替換對話框,為防止誤替換,替換范圍為選擇的部分,并勾選“搜索隱藏文本” 項。
4、將private System.Windows.Forms.MainMenu替換為
private System.Windows.Forms.MenuStrip
5、將private System.Windows.Forms.MenuItem替換為:
private System.Windows.Forms.ToolStripMenuItem
6、將new System.Windows.Forms.MainMenu(this.components) 替換為:
new System.Windows.Forms.MenuStrip()
7、將new System.Windows.Forms.MenuItem()替換為:
new System.Windows.Forms.ToolStripMenuItem()
8、將MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {替換為:
Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
9、將System.Windows.Forms.Shortcut {替換為:
System.Windows.Forms.Keys,該操作是替換快捷鍵。
10、由于MenuStrip和MenuStrip的快捷鍵指定方式不一樣,因此,將Shortcut =替換成ShortcutKeys =
11、最后,將this.Menu = this.mainMenu1;(mainMenu1為VS2003中添加的主菜單名稱)改為:
this.MainMenuStrip = this.mainMenu1;并加上一句
this.Controls.Add(mainMenu1);
編譯一下,根據(jù)報錯信息,刪除原MenuStrip類中為子菜單指定Index屬性的行,并將頂級菜單添加VS2005 菜單的子菜單
的項手工由ITems修改為DropDownItems,如:
- this.menuItem5.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- 改為
- this.menuItem5.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
通過上面的操作就可以完成菜單的升級,因為都是通過復(fù)制/粘貼完成的,雖然步驟看起來較多,操作并不
麻煩,為了使用程序支持XP風(fēng)格,別忘了在原來的:
- [STAThread]
- static void Main()
- {
- Application.Run(new frmMain());
- }
- 中增加兩句,改為:
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new frmMain());
- }
再來看全局資源。全局資源文件不會自動被添加,但是我們可以自己建,也不會自動被綁定(否則豈不成了VS2005 AI版)。當(dāng)你加完資源后,回到代碼編輯界面,你會發(fā)現(xiàn)Resources的智能感知會把資源文件名顯示出來讓你選擇,實在是方便,例如有個資源文件叫Res1,其中有一個String資源叫Text1,你就可以用Resources.Res1.Text1來獲得它的值??吹竭@樣的功能,再看看原來自己搭的 VS2003資源維護框架,不免覺得有些郁悶。這樣做的好處很容易想到,一方面資源找起來方便,另一方面資源名不容易打錯?;蛟S你會覺得有些好笑,資源名怎么會打錯,對于幾十個資源來說,這或許是可笑的錯誤,但當(dāng)資源增加到數(shù)百個甚至上千個,這種事情很容易發(fā)生。#t#
不過,這次使用后,也發(fā)現(xiàn)了一些不足的地方,但是個人覺得從技術(shù)角度實現(xiàn)的確比較麻煩。比如,如果在使用過自動生成資源后,控件改名了,如果再次自動生成資源,VS2005會重建一個資源,而不是把原來的資源刪掉,這樣可能造成無用資源的堆積,特別是在多次的后期維護之后,當(dāng)然可能是我要求高了點,大家不要見怪。
總的來說,我對這次的VS2005 菜單的本地化功能還是很認可的,甚至有些感慨,開發(fā)工具能做到如此方便易用,真可謂是以用戶為導(dǎo)向,或者說以應(yīng)用為導(dǎo)向,在這方面,中國的程序員應(yīng)該好好向微軟的同仁們學(xué)習(xí)。
由于時間倉促,還沒有來得及看基于數(shù)據(jù)庫的資源支持情況,過兩天再說吧。