1、打開(kāi)Visual
成都創(chuàng)新互聯(lián)公司專注于介休網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供介休營(yíng)銷型網(wǎng)站建設(shè),介休網(wǎng)站制作、介休網(wǎng)頁(yè)設(shè)計(jì)、介休網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造介休網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供介休網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
Basic
6.0軟件,新建一個(gè)標(biāo)準(zhǔn)exe工程,或者打開(kāi)一個(gè)已經(jīng)存在的工程,按下Shift+F7或者打開(kāi)視圖菜單-對(duì)象窗口,打開(kāi)窗體界面;
2、通過(guò)資源管理窗體,雙擊其中的.frm窗體設(shè)計(jì),進(jìn)入窗體設(shè)計(jì)界面;
3、窗體界面見(jiàn)下圖;
4、打開(kāi)視圖菜單-工具箱,打開(kāi)工具箱的界面;
5、然后就可以將工具箱中的控件拖放到設(shè)計(jì)界面上,這就是所謂的窗體設(shè)計(jì)器。
你好,如果你在VB.NET中遇到菜單框顯示不一致的問(wèn)題,可以嘗試以下解決方法:
1.檢查菜單項(xiàng)的屬性:打開(kāi)菜單設(shè)計(jì)器,在屬性面板中檢查每個(gè)菜單項(xiàng)的屬性,確保它們都設(shè)置為相同的值。
2.檢查控件的樣式:在控件屬性中檢查樣式屬性,如果設(shè)置了不同的樣式可能會(huì)導(dǎo)致菜單框的顯示不一致。
3.更新.NET框架版本:如果以上方法都不能解決問(wèn)題,可能是因?yàn)槭褂玫?NET框架版本太舊而導(dǎo)致。可以嘗試更新.NET框架版本。
希望以上方法能夠解決你的問(wèn)題。你好,如果你在VB.NET中遇到菜單框顯示不一致的問(wèn)題,可以嘗試以下解決方法:
1.檢查菜單項(xiàng)的屬性:打開(kāi)菜單設(shè)計(jì)器,在屬性面板中檢查每個(gè)菜單項(xiàng)的屬性,確保它們都設(shè)置為相同的值。
2.檢查控件的樣式:在控件屬性中檢查樣式屬性,如果設(shè)置了不同的樣式可能會(huì)導(dǎo)致菜單框的顯示不一致。
3.更新.NET框架版本:如果以上方法都不能解決問(wèn)題,可能是因?yàn)槭褂玫?NET框架版本太舊而導(dǎo)致??梢試L試更新.NET框架版本。
希望以上方法能夠解決你的問(wèn)題。
五.繪制個(gè)性化菜單
先執(zhí)行以下操作步驟 下列步驟是通過(guò)菜單編輯器設(shè)計(jì)一個(gè)簡(jiǎn)單的菜單 為后面重新繪制做基礎(chǔ)
啟動(dòng)Visual Studio Net
選擇菜單【文件】|【新建】|【項(xiàng)目】后 彈出【新建項(xiàng)目】對(duì)話框
將【項(xiàng)目類型】設(shè)置為【Visual Basic項(xiàng)目】
將【模板】設(shè)置為【W(wǎng)indows應(yīng)用程序】
在【名稱】文本框中輸入【自己畫菜單】
在【位置】的文本框中輸入【E:\VS NET項(xiàng)目】 然后單擊【確定】按鈕 這樣在 E:\VS NET項(xiàng)目 目錄中就產(chǎn)生了名稱為 自己畫菜單 的文件夾 并在里面創(chuàng)建了名稱為 自己畫菜單 的項(xiàng)目文件
把Visual Studio Net的當(dāng)前窗口切換到【Form vb(設(shè)計(jì))】窗口 并從【工具箱】中的【W(wǎng)indows窗體組件】選項(xiàng)卡中往Form 窗體中拖入下列組件
一個(gè)MainMenu組件 名稱為 MainMenu
選中 MainMenu 組件 單擊鼠標(biāo)右鍵 在彈出的菜單中選擇 編輯菜單 并按照?qǐng)D 所示界面設(shè)計(jì)菜單
圖 【自己畫菜單】項(xiàng)目設(shè)計(jì)界面之一
此時(shí)保存上述步驟 并單擊快捷鍵F 則得到圖 所示界面
圖 【自己畫菜單】運(yùn)行界面之一
這樣通過(guò)菜單編輯器就完成了一個(gè)非常普通的菜單 下面就對(duì)此菜單進(jìn)行改造 在改造之前 要先設(shè)定項(xiàng)目中的三個(gè)MenuItem類實(shí)例的OwnerDraw屬性值為 True 因?yàn)橹挥写藢傩灾禐?True 才會(huì)觸發(fā)繪制菜單時(shí)所需要的DrawItem事件和MeasureItem事件 之后再在上面項(xiàng)目的基礎(chǔ)上執(zhí)行下一步操作
把Visual Stuido Net的當(dāng)前窗口切換到Form vb的代碼編輯窗口 并在InitializeComponent過(guò)程之后添加下列代碼 下列代碼是繪制 文件 菜單項(xiàng) 其作用是改變 文件 菜單項(xiàng)的字體 大小和菜單項(xiàng)的 其具體的繪制方法請(qǐng)參考下列代碼中的注釋
Private Sub MenuItem _DrawItem ( ByVal sender As Object ByVal e As System Windows Forms DrawItemEventArgs ) Handles MenuItem DrawItem Dim rfBound As RectangleF = New RectangleF ( e Bounds X e Bounds Y e Bounds Width e Bounds Height ) 根據(jù)DrawItemEventArgs參數(shù)獲得菜單項(xiàng)矩形區(qū)域并存儲(chǔ)到RectangleF類型實(shí)例中 Dim rfBound As Rectangle = New Rectangle ( e Bounds X e Bounds Y e Bounds Width e Bounds Height ) 根據(jù)DrawItemEventArgs參數(shù)獲得菜單項(xiàng)矩形區(qū)域并存儲(chǔ)到Rectangle類型實(shí)例中 Rectangle類型實(shí)例和RectangleF類型實(shí)例差不多 但在后面代碼中繪制菜單的函數(shù)是有區(qū)別的 e Graphics FillRectangle(New SolidBrush(Color LightGreen) rfBound) 以LightGreen色彩填充MenuItem 菜單項(xiàng)對(duì)應(yīng)的矩形區(qū)域 Dim s As MenuItem = CType ( sender MenuItem ) Dim s As String = s Text 獲得MenuItem 菜單項(xiàng)的名稱 Dim sfTemp As StringFormat = New StringFormat ( ) sfTemp Alignment = StringAlignment Center 設(shè)定要畫的菜單名稱的對(duì)齊方式 中間對(duì)齊 e Graphics DrawString ( s New Font ( 宋體 FontStyle Bold ) New SolidBrush ( Color Black ) rfBound sfTemp ) 以中間對(duì)齊方式 指定字體 大小 在指定的矩形區(qū)域重畫菜單 If e State = ( DrawItemState NoAccelerator Or DrawItemState Selected ) Then 根據(jù)菜單項(xiàng)的當(dāng)前繪制狀態(tài)來(lái)繪制菜單項(xiàng) e Graphics FillRectangle ( New SolidBrush ( Color LightYellow ) rfBound ) 對(duì)菜單項(xiàng)所在的矩形區(qū)域進(jìn)行色彩填充 e Graphics DrawString ( s New Font ( 宋體 FontStyle Bold ) New SolidBrush ( Color Black ) rfBound sfTemp ) 對(duì)菜單項(xiàng)名稱繪制 End If e DrawFocusRectangle ( ) 在 DrawItemEventArgs參數(shù)得到矩形范圍內(nèi)繪制聚焦框 e Graphics DrawRectangle ( New Pen ( New SolidBrush ( Color Black ) ) rfBound ) 對(duì)菜單項(xiàng)的矩形區(qū)域繪制矩形框End Sub
操作完成后 保存修改 此時(shí)再單擊快捷鍵F 運(yùn)行程序 可得到如圖 所示的界面
圖 【自己畫菜單】運(yùn)行界面之二
可見(jiàn)繪制的 文件 菜單項(xiàng)并沒(méi)有完全顯示出來(lái) 并且后面的菜單項(xiàng)也沒(méi)有顯示 這是因?yàn)椴藛雾?xiàng)的顯示區(qū)域并沒(méi)有設(shè)定 而缺省的空間又不能完全顯示造成的 設(shè)定菜單項(xiàng)的顯示區(qū)域大小是通過(guò)MeasureItem事件來(lái)完成的 具體操作是在MenuItem 的DrawItem事件后添加下列代碼 下列代碼是是定義MenuItem 的MeasureItem事件 在此事件中設(shè)定菜單項(xiàng)的寬度(當(dāng)然也可以設(shè)定高度等)
Private Sub MenuItem _MeasureItem ( ByVal sender As Object ByVal e As System Windows Forms MeasureItemEventArgs ) Handles MenuItem MeasureItem e ItemWidth = 設(shè)定菜單項(xiàng)的寬度End Sub
保存上述修改后 單擊快捷鍵F 運(yùn)行程序可得到圖 所示界面
圖 【自己畫菜單】運(yùn)行界面之三
可見(jiàn) 文件 菜單項(xiàng)就算繪制出來(lái)了 由于其他菜單項(xiàng)沒(méi)有繪制處理 所以也未顯示 其他菜單項(xiàng)的繪制方法和 文件 菜單項(xiàng)的繪制方法基本相似 以下是在上述完成的基礎(chǔ)上 對(duì)其他菜單項(xiàng)進(jìn)行繪制 從而得到圖 所示菜單的具體實(shí)現(xiàn)步驟
圖 【自己畫菜單】運(yùn)行界面之四
在Form vb中的MenuItem 的MeasureItem事件處理程序之后添加下列代碼 下列代碼是定義MenuItem 的DrawItem事件 其功能是對(duì) 新建 菜單項(xiàng)重新繪制
Private Sub MenuItem _DrawItem ( ByVal sender As Object ByVal e As System Windows Forms DrawItemEventArgs ) Handles MenuItem DrawItem Dim rfBound As RectangleF = New RectangleF ( e Bounds X e Bounds Y e Bounds Width e Bounds Height ) 根據(jù)DrawItemEventArgs參數(shù)獲得菜單項(xiàng)矩形區(qū)域并存儲(chǔ)到RectangleF類型實(shí)例中 Dim rfBound As Rectangle = New Rectangle ( e Bounds X e Bounds Y e Bounds Width e Bounds Height ) 根據(jù)DrawItemEventArgs參數(shù)獲得菜單項(xiàng)矩形區(qū)域并存儲(chǔ)到Rectangle類型實(shí)例中 Rectangle類型實(shí)例和RectangleF類型實(shí)例差不多 但在后面代碼中繪制菜單的函數(shù)是有區(qū)別的 e Graphics FillRectangle ( New SolidBrush ( Color LightGray ) rfBound ) Dim s As MenuItem = CType ( sender MenuItem ) Dim s As String = s Text 獲得菜單項(xiàng)對(duì)應(yīng)的文本名稱 Dim sfTemp As StringFormat = New StringFormat ( ) sfTemp Alignment = StringAlignment Center 設(shè)定文本在矩形區(qū)域的對(duì)齊方式 sfTemp LineAlignment = StringAlignment Center Dim rcText As RectangleF = rfBound rcText Width = e Graphics DrawString ( s New Font ( 宋體 ) New SolidBrush ( Color Blue ) rcText sfTemp ) e Graphics DrawRectangle ( New Pen ( New SolidBrush ( Color LightGray ) ) rfBound ) If e State = ( DrawItemState NoAccelerator Or DrawItemState Selected ) Thene Graphics FillRectangle ( New SolidBrush ( Color LightYellow ) rfBound ) e Graphics DrawString ( s New Font ( 宋體 FontStyle Bold Or FontStyle Underline ) New SolidBrush ( Color Red ) rcText sfTemp ) e Graphics DrawRectangle ( New Pen ( New SolidBrush ( Color Black ) ) rfBound ) e DrawFocusRectangle ( ) End IfEnd Sub
MenuItem 的DrawItem事件處理代碼之后添加下列代碼 下列代碼是定義MenuItem 的MeasureItem事件 在此事件中實(shí)現(xiàn)設(shè)定 新建 菜單項(xiàng)的長(zhǎng)度和高度
Private Sub MenuItem _MeasureItem ( ByVal sender As Object ByVal e As System Windows Forms MeasureItemEventArgs ) Handles MenuItem MeasureItem e ItemWidth = 設(shè)定菜單項(xiàng)的寬度 e ItemHeight = 設(shè)定菜單項(xiàng)的高度End Sub
在完成上述操作步驟后 再在MenuItem 的MeasureItem事件處理程序之后添加下列代碼 下列代碼是定義MenuItem 的DrawItem事件 其功能是對(duì) 打開(kāi) 菜單項(xiàng)重新繪制
Private Sub MenuItem _DrawItem ( ByVal sender As Object ByVal e As System Windows Forms DrawItemEventArgs ) Handles MenuItem DrawItemDim rfBound As RectangleF = New RectangleF ( e Bounds X e Bounds Y e Bounds Width e Bounds Height ) 根據(jù)DrawItemEventArgs參數(shù)獲得菜單項(xiàng)矩形區(qū)域并存儲(chǔ)到RectangleF類型實(shí)例中Dim rfBound As Rectangle = New Rectangle ( e Bounds X e Bounds Y e Bounds Width e Bounds Height ) 根據(jù)DrawItemEventArgs參數(shù)獲得菜單項(xiàng)矩形區(qū)域并存儲(chǔ)到Rectangle類型實(shí)例中 Rectangle類型實(shí)例和RectangleF類型實(shí)例差不多 但在后面代碼中繪制菜單的函數(shù)是有區(qū)別的Dim s As MenuItem = CType ( sender MenuItem ) Dim s As String = s TextDim sfTemp As StringFormat = New StringFormat ( ) sfTemp Alignment = StringAlignment CentersfTemp LineAlignment = StringAlignment CenterDim rcText As RectangleF = rfBoundrcText Width = e Graphics DrawString ( s New Font ( Veranda ) New SolidBrush ( Color Blue ) rcText sfTemp ) e Graphics DrawRectangle ( New Pen ( New SolidBrush ( Color LightGray ) ) rfBound ) If e State = ( DrawItemState NoAccelerator Or DrawItemState Selected ) Then e Graphics FillRectangle ( New SolidBrush ( Color LightYellow ) rfBound ) e Graphics DrawString ( s New Font ( Veranda FontStyle Bold Or FontStyle Underline ) New SolidBrush ( Color Red ) rcText sfTemp ) e Graphics DrawRectangle ( New Pen ( New SolidBrush ( Color Black ) ) rfBound ) e DrawFocusRectangle ( ) End IfEnd Sub
MenuItem 的DrawItem事件處理代碼之后添加下列代碼 下列代碼是定義MenuItem 的MeasureItem事件 在此事件中實(shí)現(xiàn)設(shè)定 新建 菜單項(xiàng)的長(zhǎng)度和高度
Private Sub MenuItem _MeasureItem ( ByVal sender As Object ByVal e As System Windows Forms MeasureItemEventArgs ) Handles MenuItem MeasureItem e ItemWidth = 設(shè)定菜單項(xiàng)的寬度 e ItemHeight = 設(shè)定菜單項(xiàng)的高度End Sub
在上述步驟都正確完成后 本文介紹的手工繪制菜單就完成 此時(shí)單擊快捷鍵F 運(yùn)行 程序就可以得到圖 所示的運(yùn)行界面
六.總結(jié)
本文主要內(nèi)容是介紹VB NET設(shè)計(jì)和創(chuàng)建菜單 其中不僅介紹了使用菜單設(shè)計(jì)器來(lái)靜態(tài)設(shè)計(jì)菜單 還介紹了使用MainMenu類 MenuItem類和ContextMenu類動(dòng)態(tài)創(chuàng)建菜單的實(shí)現(xiàn)方法 在動(dòng)態(tài)創(chuàng)建時(shí) 首先要了解要?jiǎng)?chuàng)建的菜單類型 是下拉菜單 首先要?jiǎng)?chuàng)建一個(gè)MainMenu實(shí)例 是彈出菜單 首先要?jiǎng)?chuàng)建一個(gè)ContextMenu實(shí)例 然后根據(jù)菜單中的組成結(jié)構(gòu) 即菜單項(xiàng)中的父子關(guān)系 創(chuàng)建出相應(yīng)菜單 最后就是顯示出菜單 如果是下拉菜單 指派給Form的Menu屬性 如果是彈出菜單 指派給可視組件或Form的ContextMenu屬性 這樣動(dòng)態(tài)創(chuàng)建菜單才能夠顯示出來(lái) 動(dòng)態(tài)創(chuàng)建菜單的工作才算完成
此外還介紹了在Visual Basic Net中繪制個(gè)性化菜單的實(shí)現(xiàn)方法和注意事項(xiàng) 在繪制個(gè)性化菜單時(shí)最重要的是掌握DrawItem事件和MeasureItem事件用法 及繪制菜單時(shí)所要使用到的方法 雖然本文繪制的菜單并不美觀 但你可以通過(guò)本文介紹的方法來(lái)修改 從而實(shí)現(xiàn)更美觀 更有個(gè)性的菜單 最后請(qǐng)記住 在繪制菜單時(shí) 首先把菜單項(xiàng)的 OwnerDraw 屬性設(shè)定為 True
lishixinzhi/Article/program/net/201311/15454
VB 6.0 :菜單編輯器的用法
做VB 項(xiàng)目時(shí)經(jīng)常需要用菜單編輯器來(lái)創(chuàng)建自己需要的菜單,因此需要對(duì)其具體用法非常嫻熟。下面把從網(wǎng)上下載過(guò)來(lái)的資料結(jié)合自己使用的體會(huì)整理出一份文檔以供日后參考。
附加以下圖片以幫助說(shuō)明與理解。
圖片:菜單編輯器的使用
在出現(xiàn)VB6.0窗體的情況下,在菜單中選“工具”,再在其下拉菜單下選“菜單編輯器”。然后按如下說(shuō)明操作:
一. “菜單編輯器”對(duì)話框 。
使用菜單編輯器可以為應(yīng)用程序創(chuàng)建自定義菜單并定義其屬性。
二. 對(duì)話框選項(xiàng)。
1. “標(biāo)題” :使用該選項(xiàng)可以輸入菜單名或命令名,這些名字出現(xiàn)在菜單條或菜單之
中。 如果想在菜單中建立分隔符條,則應(yīng)在Caption 框中鍵入一個(gè)連字符 (-)。為了能夠通過(guò)鍵盤訪問(wèn)菜單項(xiàng),可在一個(gè)字母前插入 符號(hào)。在運(yùn)行時(shí),該字母帶有下劃線( 符號(hào)是不可見(jiàn)的),按 ALT 鍵和該字母就可訪問(wèn)菜單或命令。如果要在菜單中顯示 符號(hào),則應(yīng)在標(biāo)題中連續(xù)輸入兩個(gè) 符號(hào)。
2. “名稱” :用來(lái)為菜單項(xiàng)輸入控件名。控件名是標(biāo)識(shí)符,僅用于訪問(wèn)代碼中的菜單項(xiàng);它不會(huì)出現(xiàn)在菜單中。
3. “索引” :可指定一個(gè)數(shù)字值來(lái)確定控件在控件數(shù)組中的位置。該位置與控件的屏
幕位置無(wú)關(guān)。
4. “快捷鍵” :可在列表框中為每個(gè)命令選擇快捷鍵。
5. “幫助上下文 ID” 。允許為 context ID 指定唯一數(shù)值。在 HelpFile 屬性指定的幫助文件中用該數(shù)值查找適當(dāng)?shù)膸椭黝}。
6. “協(xié)調(diào)位置” :該列表框中共有四個(gè)可選項(xiàng),他們決定是否及如何在容器窗體中顯
示菜單。
7. “復(fù)選” :允許在菜單項(xiàng)的左邊設(shè)置復(fù)選標(biāo)記。通常用它來(lái)指出切換選項(xiàng)的開(kāi)關(guān)狀
態(tài)。
8. “有效” :由此選項(xiàng)可決定是否讓菜單項(xiàng)對(duì)事件做出響應(yīng),而如果希望該項(xiàng)失效并
以淺灰色顯示出來(lái),則也可取消對(duì)該復(fù)選框的選用。
9. “可見(jiàn)”:決定是否將菜單項(xiàng)顯示在菜單上。
10. “顯示窗口列表” :在 MDI 應(yīng)用程序中,確定菜單控件是否包含一個(gè)打開(kāi)的 MDI
子窗體列表。
11. “右箭頭” :每次單擊都把選定的菜單向右移一個(gè)等級(jí)。一共可以創(chuàng)建四個(gè)子菜單
等級(jí)。
12. “左箭頭” :每次單擊都把選定的菜單向上移一個(gè)等級(jí)。一共可以創(chuàng)建四個(gè)子菜單
等級(jí)。
13. “上箭頭” :每次單擊都把選定的菜單項(xiàng)在同級(jí)菜單內(nèi)向上移動(dòng)一個(gè)位置。
14. “下箭頭” :“下箭頭” 。每次單擊都把選定的菜單項(xiàng)在同級(jí)菜單內(nèi)向下移動(dòng)一個(gè)位置。
15. “菜單列表” :該列表框顯示菜單項(xiàng)的分級(jí)列表。將子菜單項(xiàng)縮進(jìn)以指出它們的分
級(jí)位置或等級(jí)。
16. “下一個(gè)” :將選定項(xiàng)移動(dòng)到下一行,往往是為建立下一個(gè)菜單項(xiàng)準(zhǔn)備。
17. “插入” :在列表框的當(dāng)前選定行上方插入一行。
18. “刪除” :刪除當(dāng)前選定行。
19. “確定” :關(guān)閉菜單編輯器,并對(duì)選定的最后一個(gè)窗體進(jìn)行修改。菜單可以在設(shè)計(jì)
時(shí)使用,但在設(shè)計(jì)時(shí)可以通過(guò)選定一個(gè)菜單,來(lái)打開(kāi)菜單單擊事件的“代碼”窗口,而不是執(zhí)行事件代碼。
20. “取消” :關(guān)閉菜單編輯器,取消所有修改。
2010-4-24 從網(wǎng)上下載并整理