新聞中心
學(xué)習(xí)C#時,經(jīng)常會遇到C# SystemMenu類問題,這里將介紹C# SystemMenu類問題的解決方法。

專注于為中小企業(yè)提供做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)當(dāng)陽免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
C# SystemMenu類
C# SystemMenu類的實(shí)現(xiàn)使得整個系統(tǒng)菜單存取容易許多。你可以使用這個類來修改一個窗口的菜單。通過調(diào)用靜態(tài)成員函數(shù)FromForm你得到一個對象,該函數(shù)要求一個Form對象或一個從Form繼承的類作為它的參數(shù)。然后它創(chuàng)建一個新的對象,當(dāng)然如果GetSystemMenu API調(diào)用失敗的話,將引發(fā)一個NoSystemMenuException例外。
注意,每一個Windows API菜單函數(shù)要求一個菜單句柄以利于操作。因?yàn)椴藛尉浔鷮?shí)際上是一個C++指針,所以在.NET中你要使用IntPtr來操作它。許多函數(shù)還需要一個位掩碼標(biāo)志來指明新菜單項(xiàng)的動作或形式。幸運(yùn)的是,你不必象在VC++中那樣,通過某個頭文件的包含來使用一系列的位掩碼標(biāo)志定義,.NET中已經(jīng)提供了一個現(xiàn)成的公共枚舉類ItemFlags。下面對這個類的幾個重要成員作一說明:
◆mfString―― 告訴子系統(tǒng)將顯示由菜單項(xiàng)中的“Item”參數(shù)傳遞的字符串。
◆mfSeparator――此時 "ID" 與 "Item" 參數(shù)被忽略。
◆MfBarBreak―― 當(dāng)用于菜單條時,其功能與mfBreak一樣;當(dāng)用于下拉菜單,子菜單或快捷菜單時,新的一列與舊有的一列由一線垂直線所隔開。
◆MfBreak――把當(dāng)前項(xiàng)目放在一個新行(菜單條)或新的一列(下拉菜單,子菜單或快捷菜單)。
注意:如果指定多個標(biāo)志,應(yīng)該用位操作運(yùn)算符|(或)連接。例如:
- //將創(chuàng)建一個菜單項(xiàng) "Test" ,且該項(xiàng)被選中(checked)
- mySystemMenu.AppendMenu(myID, "Test", ItemFlags.mfString|ItemFlags.mfChecked);
“Item”參數(shù)指定了新項(xiàng)中要顯示的文本,其ID必須是唯一的數(shù)字――用來標(biāo)志該菜單項(xiàng)。
注意:確保新項(xiàng)的ID大于0小于0XF000。因?yàn)榇笥诘扔?XF000的范圍為系統(tǒng)命令所保留使用。你也可以調(diào)用類SystemMenu的靜態(tài)方法VerifyItemID來核驗(yàn)是否你的ID正確。
另外,還有兩個需要解釋的常量:mfByCommand和mfByPosition。
第一,在缺省情況下,使用mfByCommand。第二,“Pos”的解釋依賴于這些標(biāo)志:如果你指定mfByCommand,“Pos”參數(shù)就是在新項(xiàng)目插入前項(xiàng)目的ID;如果你指定mfByPosition,“Pos”參數(shù)就是以0索引為開頭的新項(xiàng)的相對位置;如果是-1并且指定 mfByPosition,該項(xiàng)目將被插入到最后。這也正是為什么AppendMenu()可以為InsertMenu()所取代的原因。以上介紹C# SystemMenu類
【編輯推薦】
- C#創(chuàng)建表單簡單介紹
- C#修改DataReader默認(rèn)行為
- C#設(shè)置CooperativeLevel概述
- C#表單增加控件簡單描述
- C# EmployeePlug類概述
新聞名稱:C# SystemMenu類介紹
網(wǎng)頁地址:http://m.fisionsoft.com.cn/article/cccjese.html


咨詢
建站咨詢
