043合併選單

2021-10-06 05:18:50 字數 3136 閱讀 1598

在某些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 將該項插入目標集合中的匹配項前。如果匹配項在...