在某些mdi應用程式中,mdi子窗體之間的型別可能是不同的d例如,乙個mdi子窗體可能為電子**,而另乙個mdi子窗體可能為圖表。在這種情況下,就需要在不同型別的mdi子視窗被啟用時,用mdl子視窗的選單內容更新mdi父視窗的選單內容。即將子窗體的選單合併到父窗體中。
通過設定allowmerge、mergeaction和mergelndex屬性,可以將mdi子選單追加到mdi父選單中。並且當關閉mdi子窗體時,可以從mdi父窗體中移除所追加的選單。
合併操作
mergeaction屬性值
說明將子視窗的選單直接移動到父視窗中,並作為最後一項
insert
將源選單項新增到目標選單項的集合中,新增位置由源選單項上設定的mergeindex屬性指定
replace
查詢文字匹配(找不到就用mergeindex值),然後用源選單 項替換匹配目標的選單項
remove
查詢文字匹配(找不到就用mergeindex值),然後將選單項從目標選單項中移除
matchonly
僅查詢文字匹配(找不到就用mergeindex值),但不進行任何操作
tooistripltem.mergelndex:獲取或設定合併項在當前選單內的位置。如果找到匹配項則為合併項的索引數;如果未找到匹配項,將顯示-1。
續041建立mdi程式,將子窗體選單項合併到mdi父視窗中:
(1)將父窗體選單menustrip的allowmerge屬性設定為true。
(2)將頂級選單項「檔案」的mergelndex設定為1, 「編輯」選單的mergelndex設定為2,「視窗」選單的mergelndex設定為3。
(3)在工具箱中雙擊menustlrip控制項,為子窗體新增選單,並將選單的allowmerge屬性設定為true,並將visible屬性設定為false。
(4)為子窗體選單新增乙個頂級選單「字型』』,其text屬性為「字型(&f)」,屬性mergeindex為2,屬性mergeaction為insert。
(5)為「字型」選單新增下拉列表項。
(6)格式化richtextbox控制項中的文字。
childfrm中新增**
'粗體
private sub boldmenuitem_click(byval sender as system.object, byval e as system.eventargs) handles boldmenuitem.click
'當前字型
dim pcurrentfont as font
pcurrentfont = txtcontent.selectionfont
dim pfontstyle as fontstyle
if not pcurrentfont.bold then
pfontstyle += fontstyle.bold
end if
if pcurrentfont.italic then
pfontstyle += fontstyle.italic
end if
if pcurrentfont.underline then
pfontstyle += fontstyle.underline
end if
txtcontent.font = new font(pcurrentfont, pfontstyle)
txtcontent.focus()
end sub
'下劃線
private sub underlinmenuitem_click(byval sender as system.object, byval e as system.eventargs) handles underlinmenuitem.click
'當前字型
dim pcurrentfont as font
pcurrentfont = txtcontent.selectionfont
dim pfontstyle as fontstyle
if pcurrentfont.bold then
pfontstyle += fontstyle.bold
end if
if pcurrentfont.italic then
pfontstyle += fontstyle.italic
end if
if not pcurrentfont.underline then
pfontstyle += fontstyle.underline
end if
txtcontent.font = new font(pcurrentfont, pfontstyle)
txtcontent.focus()
end sub
'斜體private sub italicmenuitem_click(byval sender as system.object, byval e as system.eventargs) handles italicmenuitem.click
'當前字型
dim pcurrentfont as font
pcurrentfont = txtcontent.selectionfont
dim pfontstyle as fontstyle
if pcurrentfont.bold then
pfontstyle += fontstyle.bold
end if
if not pcurrentfont.italic then
pfontstyle += fontstyle.italic
end if
if pcurrentfont.underline then
pfontstyle += fontstyle.underline
end if
txtcontent.font = new font(pcurrentfont, pfontstyle)
txtcontent.focus()
end sub
使用C 使選單動態合併
在程式中經常使用彈出選單,並且乙個窗體中可以存在多個彈出選單。開發過mdi窗體的讀者可能都知道,當mdi子窗體最大化時,子窗體和主窗體的選單能夠自動的合併。這是如何實現的呢?本例實現了將兩個彈出選單動態的合併成乙個彈出選單的功能。例項效果如圖所示。c 2.0中已經將彈出選單封裝為context me...
C MDI窗體選單合併工具欄
c mdi窗體選單合併子窗體 c mdi窗體選單合併子窗體c mdi窗體選單合併子窗體選單非常簡單,只需設定一下屬性allowmerge true就ok 但要合併工具欄,就稍微複雜一下了。c mdi窗體工具欄合併子窗體工具欄 第一,mdi窗體 frmmain為mdi窗體 private void f...
C 中選單合併的幾點心得
mdi程式中,子窗體選單缺省會合併到主窗體選單中去.設定合併選單時,只需要設定子窗體中選單項,與主窗體中的選單設定無關.合併的原則採用的是匹配的原則,系統首先匹配兩個選單項的text屬性,如不匹配則再匹配mergeindex屬性.合併方式有 insert 將該項插入目標集合中的匹配項前。如果匹配項在...