




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章多重窗體和多文檔界面8.4多重窗體應(yīng)用程序MDI窗體應(yīng)用程序MDI窗體菜單綜合應(yīng)用8.1多重窗體應(yīng)用程序8.1.1窗體特殊屬性1.指定窗體啟動(dòng)位置(StartPosition)所謂窗體的啟動(dòng)位置,是指程序開始運(yùn)行后窗體在屏幕中的位置,這個(gè)位置可以通過窗體的StartPosition屬性來設(shè)置。StartPosition屬性可以在屬性窗口中進(jìn)行設(shè)置,也可以在程序中動(dòng)態(tài)設(shè)置。設(shè)置該屬性的格式如下:語法:
窗體名稱.StartPosition=位置值8.1.1窗體特殊屬性說明:
(1)窗體名稱是代表窗體對(duì)象的名稱。
(2)位置值是FormStartPosition枚舉類型,指定窗體的啟動(dòng)位置,取值見表8.1。取值說明CenterParent窗體在其父窗體中居中。CenterScreen窗體在屏幕中居中。Manual窗體位置由設(shè)計(jì)時(shí)的位置決定。WindowsDefaultBounds窗體定位在Windows默認(rèn)位置,其邊界由Windows默認(rèn)決定。WindowsDefaultLocation窗體定位在Windows默認(rèn)位置,其尺寸由窗體大小指定。默認(rèn)值表8.1FormStartPosition的取值在設(shè)置窗體的啟動(dòng)位置的值前面,應(yīng)加上FormStartPosition枚舉類型名稱,例如,設(shè)置窗體的啟動(dòng)位置為在屏幕中居中,方法如下:Me.StartPosition=FormStartPosition.CenterScreen 8.1.1窗體特殊屬性2.頂層窗體(TopMost)在一般情況下,活動(dòng)窗體位于應(yīng)用程序的其他窗體的前面,當(dāng)失去焦點(diǎn)后,該窗體不一定還在最前面??梢允褂么绑w的TopMost屬性,來指定窗體始終在最頂層,即使失去焦點(diǎn)成為非活動(dòng)窗體,仍然是可見的。TopMost屬性可以在屬性窗口中進(jìn)行設(shè)置,也可以在程序中動(dòng)態(tài)設(shè)置。設(shè)置該屬性的格式如下:語法:
窗體名稱.TopMost=值3.窗體透明度(Opacity)在一般情況下,窗體是不透明的,即窗體會(huì)覆蓋背后的其他對(duì)象(如其他窗體),被覆蓋的對(duì)象不可見。可以通過窗體的Opacity屬性,來指定窗體的透明度。Opacity屬性可以在屬性窗口中進(jìn)行設(shè)置,也可以在程序中動(dòng)態(tài)設(shè)置。設(shè)置該屬性的格式如下:語法:
窗體名稱.Opacity=值8.1.2窗體特殊方法1.關(guān)閉窗體(Close方法)關(guān)閉窗體,將釋放該窗體所占用的資源,同時(shí)釋放在該窗體對(duì)象內(nèi)建立的所有資源。如果關(guān)閉的是應(yīng)用程序的啟動(dòng)窗體,將結(jié)束應(yīng)用程序。該方法的調(diào)用格式如下:語法:
窗體名稱.Close要關(guān)閉當(dāng)前窗體,可以使用Me關(guān)鍵詞,否則應(yīng)使用窗體對(duì)象的名字(即窗體的Name屬性值),示例如下:Me.Close '關(guān)閉當(dāng)前窗體。Form1.Close '關(guān)閉名為Form1的窗體。8.1.2窗體特殊方法2.顯示窗體(Show方法)Show方法用來顯示窗體。顯示窗體相當(dāng)于把窗體的Visible屬性設(shè)置為True,在調(diào)用Show方法后,只要不調(diào)用Hide方法,窗體的Visible屬性始終為True。Show方法的調(diào)用格式如下:語法:
窗體名稱.Show例如,要顯示當(dāng)前窗體,可以省略窗體名稱,否則應(yīng)使用窗體對(duì)象的名字,方法如下:Show '顯示當(dāng)前窗體。Form1.Show '顯示名為Form1的窗體。8.1.2窗體特殊方法3.顯示模態(tài)型窗體(ShowDialog方法)ShowDialog方法用來將窗體顯示為模態(tài)型窗體。當(dāng)打開模態(tài)型窗體后,鼠標(biāo)只在該窗體內(nèi)有效,不能到其他窗體中操作,只有關(guān)閉了該窗體后,才能對(duì)其他窗體進(jìn)行操作。而用Show方法顯示的是非模態(tài)窗口。ShowDialog方法的調(diào)用格式如下:語法:
窗體名稱.ShowDialog例如,將Form1窗體顯示為模態(tài)窗體,方法如下:Form1.ShowDialog '顯示名為Form1的模態(tài)窗體。8.1.2窗體特殊方法4.隱藏窗體(Hide方法)Hide方法用來隱藏窗體。隱藏窗體實(shí)際上是使窗體不在屏幕上顯示,但仍保存在內(nèi)存中,并沒有從內(nèi)存中卸載。隱藏窗體相當(dāng)于把窗體的Visible屬性設(shè)置為False,在調(diào)用Hide方法后,只要不調(diào)用Show方法,窗體的Visible屬性始終為False。Hide方法的調(diào)用格式如下:語法:
窗體名稱.Hide例如,要隱藏當(dāng)前窗體,可以省略窗體名稱,否則應(yīng)使用窗體對(duì)象的名字,方法如下:Hide '隱藏當(dāng)前窗體。Form1.Hide '隱藏名為Form1的窗體。8.1.3模塊與多重窗體(1)添加模塊在項(xiàng)目中添加模塊,可以通過“項(xiàng)目”菜單中的“添加模塊”命令來建立。執(zhí)行“添加模塊”命令后,顯示“添加新項(xiàng)”對(duì)話框,如圖8.1所示。8.1.3模塊與多重窗體(2)模塊結(jié)構(gòu)模塊以Module開頭,以EndModule結(jié)束,它的一般格式如下:Module模塊名
'變量、常量或過程定義。EndModule 8.1.4指定啟動(dòng)窗體指定某個(gè)窗體為啟動(dòng)窗體是通過“屬性頁”對(duì)話框進(jìn)行的,操作步驟如下:(1)在“項(xiàng)目”菜單中單擊當(dāng)前項(xiàng)目屬性,或用鼠標(biāo)右擊解決方案資源管理器窗口中項(xiàng)目的名字,在彈出菜單中單擊“屬性”,即可打開“屬性頁”對(duì)話框,如圖8.2所示。8.1.4指定啟動(dòng)窗體(2)在“屬性頁”左部的列表中,選擇“應(yīng)用程序”現(xiàn),在右部的“啟動(dòng)窗體”下拉列表框中,選擇要設(shè)置為啟動(dòng)窗體的窗體名,單擊“確定”按鈕,即可將所選擇的窗體設(shè)置為啟動(dòng)窗體。8.1.5SubMain過程在多重窗體程序中,有時(shí)需要在窗體顯示前進(jìn)行一些初始化,這就需要在啟動(dòng)程序時(shí)先執(zhí)行一個(gè)初始化的過程,然后再顯示窗體。在VB.NET中,可以定義這樣的過程,這個(gè)過程稱為啟動(dòng)過程,它有一個(gè)特定的過程名字Main,通常叫做SubMain過程。SubMain過程只能在模塊中定義,它的一般格式如下:SubMain() '進(jìn)行初始化的語句EndSub 8.1.6創(chuàng)建多重窗體應(yīng)用程序【例8.1】創(chuàng)建由2個(gè)窗體和一個(gè)模塊構(gòu)成的項(xiàng)目,在模塊中定義SubMain過程,并將它設(shè)置為啟動(dòng)過程。通過窗體1中的按鈕可以顯示出窗體2,在窗體2中可以調(diào)用模塊中定義的顯示一個(gè)消息的全局過程。界面設(shè)計(jì):
在第一個(gè)窗體(Forml)中,添加2個(gè)命令按鈕(Button1、Button2),在第二個(gè)窗體(Form2)中,也添加2個(gè)命令按鈕(Button1、Button2)。表8.2列出了2個(gè)窗體中主要的對(duì)象及其屬性。對(duì)象對(duì)象名屬性名屬性值FormForm1Text第一個(gè)窗體ButtonButton1Text顯示Form2Button2Text結(jié)束FormForm2Text第二個(gè)窗體ButtonButton1Text返回Button2Text調(diào)用過程表8.2多重窗體及控件屬性表8.1.6創(chuàng)建多重窗體應(yīng)用程序運(yùn)行后界面效果如圖8.3所示。
8.1.6創(chuàng)建多重窗體應(yīng)用程序程序代碼設(shè)計(jì):為了設(shè)置SubMain啟動(dòng)過程,在項(xiàng)目中添加了一個(gè)模塊Module1,并定義了一個(gè)SubMain過程和一個(gè)全局過程showmsg,程序中使用了DoEvents方法,所以在模塊中引入了System.Windows.Forms.Application名稱空間。'引入名稱空間System.Windows.Forms.Application,以便調(diào)用DoEvents方法ImportsSystem.Windows.Forms.ApplicationModuleModule1PublicF1AsNewForm1 '定義全局變量,將第一個(gè)窗體對(duì)象聲明為全局變量。Submain()F1.Show() '顯示第一個(gè)窗體DoWhileTrueDoEvents() '把控制權(quán)交給其他對(duì)象LoopEndSubPublicSubshowmsg() '定義全局過程MsgBox("調(diào)用全局過程示例")EndSubEndModule8.1.6創(chuàng)建多重窗體應(yīng)用程序第一個(gè)窗體中有2個(gè)按鈕,當(dāng)單擊“顯示Form2”按鈕后,顯示出第二個(gè)窗體,同時(shí)隱藏第一個(gè)窗體;當(dāng)單擊“結(jié)束”按鈕后,結(jié)束程序運(yùn)行,相應(yīng)的單擊事件程序如下:'“顯示Form2”按鈕事件代碼PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesButton1.ClickDimform2AsNewForm2 '創(chuàng)建Form2窗體實(shí)例form2.StartPosition=FormStartPosition.CenterScreenform2.Show() '顯示第二個(gè)窗體Me.Hide() '隱藏當(dāng)前窗體EndSub'“結(jié)束”按鈕事件代碼PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_ HandlesButton2.ClickEnd '結(jié)束程序EndSub8.1.6創(chuàng)建多重窗體應(yīng)用程序第二個(gè)窗體中有2個(gè)按鈕,當(dāng)單擊“調(diào)用過程”按鈕后,將調(diào)用模塊中定義的顯示“調(diào)用全局過程示例”消息的“showmsg”全局過程;當(dāng)單擊“返回”按鈕后,顯示出第一個(gè)窗體,同時(shí)隱藏本窗體,相應(yīng)的單擊事件程序如下:'“返回”按鈕事件代碼。PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesButton1.ClickModule1.F1.Show() '訪問模塊中全局變量F1,顯示第一個(gè)窗體Me.Hide() '隱藏當(dāng)前窗體EndSub'“調(diào)用過程”按鈕事件代碼。PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_ HandlesButton2.ClickModule1.showmsg() '調(diào)用模塊中定義的全局過程EndSub8.2MDI窗體應(yīng)用程序8.2.1與MDI有關(guān)的屬性和方法1.指定MDI父窗體(IsMdiContainer)IsMdiContainer屬性可以指定窗體是否為MDI父窗體,默認(rèn)值為False,表示本窗體不是MDI父窗體,若為True即為MDI父窗體。IsMdiContainer屬性可以在屬性窗口中進(jìn)行設(shè)置,也可以在程序中動(dòng)態(tài)設(shè)置。設(shè)置該屬性的格式如下:語法:
窗體名稱.IsMdiContainer=值2.指定MDI子窗體(MdiParent)MdiParent屬性可以指定本窗體的父窗體,從而將本窗體設(shè)置為MDI子窗體。MdiParent屬性不能在屬性窗口中進(jìn)行設(shè)置,只能在程序中動(dòng)態(tài)設(shè)置。設(shè)置該屬性的格式如下:語法:
窗體名稱.MdiParent=父窗體名稱例如,指定當(dāng)前窗體是Form2窗體的父窗體,F(xiàn)orm2窗體為子窗體,方法如下:DimNewDocAsNewForm2() '創(chuàng)建Form2窗體的實(shí)例。NewDoc.MdiParent=Me '指定當(dāng)前窗體為Form2的父窗體。8.2.1與MDI有關(guān)的屬性和方法3.判斷MDI子窗體(IsMdiChild)IsMdiChild屬性可以判斷窗體是否為MDI子窗體,它是一個(gè)只讀屬性,不能設(shè)置它的值,只能在運(yùn)行時(shí)讀取該值。若為True,表示該窗體是MDI子窗體,否則不是。4.獲取MDI子窗體(ActiveMdiChild)ActiveMdiChild屬性用來獲取當(dāng)前活動(dòng)的MDI子窗體,如果當(dāng)前沒有活動(dòng)的MDI子窗體,則返回空引用(Nothing)??梢杂盟鼇泶_定MDI應(yīng)用程序中是否有打開的MDI子窗體。ActiveMdiChild屬性是一個(gè)運(yùn)行時(shí)屬性,通過它可以對(duì)當(dāng)前活動(dòng)的MDI子窗體執(zhí)行操作。8.2.1與MDI有關(guān)的屬性和方法5.排列MDI子窗體(LayoutMdi)LayoutMdi是窗體的一個(gè)方法,該方法的功能是在MDI窗體中,按不同的方式排列其中的MDI子窗體或圖標(biāo)。調(diào)用LayoutMdi方法的格式如下:語法:
MDI窗體名稱.LayoutMdi(排列方式
)說明:
(1)MDI窗體名稱代表MDI父窗體對(duì)象的實(shí)例。
(2)排列方式為MdiLayout枚舉類型,表示排列方式??扇≈狄姳?.3。枚舉值說明Cascade“層疊式”排列各MDI子窗體。TileHorizontal“水平平鋪式”排列各MDI子窗體。TileVertical“垂直平鋪式”排列各MDI子窗體。ArrangeIcons當(dāng)MDI子窗體被最小化為圖標(biāo)后,該方式將使圖標(biāo)在父窗體的底部重新排列。表8.3MdiLayout枚舉值例如,假設(shè)當(dāng)前窗體是MDI父窗體,設(shè)置其中的子窗體呈“水平平鋪式”排列,方法如下:Me.LayoutMdi(MdiLayout.TileHorizontal) 8.2.2建立MDI應(yīng)用程序1.建立MDI父窗體對(duì)于項(xiàng)目中的任何一個(gè)窗體來說,只要將其IsMdiContainer屬性設(shè)置為True,就可以使其成為MDI父窗體。在默認(rèn)情況下,IsMdiContainer屬性值為False,表示該窗體不是MDI父窗體。通常在設(shè)計(jì)階段,把第一個(gè)創(chuàng)建的窗體設(shè)置為MDI父窗體,后續(xù)建立的窗體設(shè)置為MDI子窗體。2.建立MDI子窗體當(dāng)在項(xiàng)目中添加一個(gè)新窗體后,默認(rèn)的情況下,該窗體是普通窗體,在設(shè)計(jì)階段不能將其設(shè)置為MDI子窗體,只能在運(yùn)行時(shí),通過代碼設(shè)置其MdiParent屬性,將它設(shè)置為MDI子窗體。設(shè)置的方法如8.2.1所述。子窗體建立后,不會(huì)立即在MDI父窗體內(nèi)顯示出來,必須執(zhí)行顯示窗體的Show方法,才能顯示出該窗體,例如:DimNewDocAsNewForm2() '創(chuàng)建Form2窗體的實(shí)例。NewDoc.MdiParent=Me '指定當(dāng)前窗體為Form2的父窗體。NewDoc.Show '顯示出MDI子窗體Form2。8.2.2建立MDI應(yīng)用程序3.設(shè)置MDI父窗體為啟動(dòng)窗體如果將第一個(gè)窗體設(shè)置為MDI父窗體,那么系統(tǒng)默認(rèn)將第一個(gè)窗體指定為啟動(dòng)窗體,否則,就需要把MDI父窗體設(shè)置為啟動(dòng)窗體,具體操作方法如8.1.4所述。4.編寫程序代碼建立了MDI父窗體和MDI子窗體,指定了啟動(dòng)窗體后,就可以像普通窗體應(yīng)用程序一樣,設(shè)計(jì)各MDI窗體界面以及實(shí)現(xiàn)相應(yīng)功能的程序代碼了。8.2.2建立MDI應(yīng)用程序【例8.2】建立MDI窗體應(yīng)用程序,通過窗體上的按鈕顯示MDI子窗體。界面設(shè)計(jì):
在第一個(gè)窗體(Forml)中,有2個(gè)命令按鈕(Button1、Button2),第二個(gè)窗體(Form2)中,添加1個(gè)命令按鈕(Button1)。表8.4列出了2個(gè)窗體中主要的對(duì)象及其屬性。對(duì)象對(duì)象名屬性名屬性值FormForm1TextMDI應(yīng)用程序IsMdiContainerTrueButtonButton1Text顯示子窗體Button2Text結(jié)束FormForm2TextMDI子窗體ButtonButton1Text關(guān)閉表8.4MDI窗體及控件屬性表8.2.2建立MDI應(yīng)用程序運(yùn)行后界面效果如圖8.4所示。8.2.2建立MDI應(yīng)用程序程序代碼設(shè)計(jì):第一個(gè)窗體中有2個(gè)按鈕,當(dāng)單擊“顯示子窗體”按鈕后,在MDI主窗體中顯示出第二個(gè)窗體;當(dāng)單擊“結(jié)束”按鈕后,結(jié)束程序運(yùn)行,相應(yīng)的單擊事件程序如下:'顯示Form2按鈕事件代碼PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesButton1.ClickDimform2AsNewForm2 '創(chuàng)建Form2窗體實(shí)例form2.MdiParent=Me '設(shè)置form2為MDI子窗體form2.WindowState=FormWindowState.Maximized '子窗體最大化顯示form2.Show() '顯示子窗體EndSub'結(jié)束按鈕事件代碼PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesButton2.ClickEnd '結(jié)束程序EndSub8.2.2建立MDI應(yīng)用程序第二個(gè)窗體中有1個(gè)按鈕,當(dāng)單擊“關(guān)閉”按鈕后,即關(guān)閉本窗體,相應(yīng)的單擊事件程序如下:'關(guān)閉按鈕事件代碼。PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesButton1.ClickMe.Close() '關(guān)閉當(dāng)前窗體EndSub8.3MDI窗體菜單8.3.1MDI菜單的特殊屬性菜單條的MdiWindowListItem屬性指定MDI窗體中的哪個(gè)菜單項(xiàng)可以顯示MDI子窗體標(biāo)題列表。默認(rèn)值為None,表示不能顯示子菜單標(biāo)題列表;若其值為某個(gè)主菜單項(xiàng)名稱,即表示該主菜單可以顯示。在程序運(yùn)行期間,VB.NET自動(dòng)顯示和管理子窗體標(biāo)題列表。MdiWindowListItem屬性可以在設(shè)計(jì)階段設(shè)置,也可以在代碼中設(shè)置。設(shè)置該屬性的語法格式如下:語法:
菜單條名.MdiWindowListItem=菜單項(xiàng)名稱8.3.2建立MDI菜單應(yīng)用程序1.建立MDI父窗體建立方法如8.2.2所述。2.建立MDI子窗體建立方法如8.2.2所述。3.設(shè)置MDI父窗體為啟動(dòng)窗體設(shè)置方法如8.2.2所述。4.添加菜單在MDI父窗體中或在MDI子窗體中添加MenuStrip控件,建立各菜單項(xiàng),建立方法參閱第6章所述。若要求某菜單項(xiàng)可以顯示MDI子窗體標(biāo)題列表,參照前述方法,設(shè)置其MdiWindowListItem屬性值為該菜單項(xiàng)名稱。5.編寫各菜單項(xiàng)事件代碼建立了MDI菜單后,即可編寫各菜單項(xiàng)的單擊事件代碼。至此,即建立了MDI菜單應(yīng)用程序。8.3.2建立MDI菜單應(yīng)用程序【例8.3】在MDI父窗體上建立主菜單,通過菜單命令實(shí)現(xiàn)子窗體的建立與顯示。1.界面設(shè)計(jì)
建立第一個(gè)窗體(Forml),在其中添加一個(gè)主菜單控件(MenuStrip1);建立第二個(gè)窗體(Form2,錄入學(xué)生成績(jī))和第三個(gè)窗體(Form3,關(guān)于),將Forml設(shè)置為MDI主窗體,并設(shè)置其為啟動(dòng)窗體。表8.5列出了主菜單的屬性設(shè)置。菜單項(xiàng)標(biāo)題(Text)名稱(Name)系統(tǒng)主菜單項(xiàng)系統(tǒng)sysMenuItem退出子菜單項(xiàng)退出quitMenuItem錄入主菜單項(xiàng)錄入importMenuItem學(xué)生成績(jī)子菜單項(xiàng)學(xué)生成績(jī)inportscoreMenuItem窗口主菜單項(xiàng)窗口windowMenuItem幫助主菜單項(xiàng)幫助helpMenuItem使用指南子菜單項(xiàng)使用指南bookhelpMenuItem關(guān)于子菜單項(xiàng)關(guān)于aboutMenuItem表8.5菜單項(xiàng)屬性設(shè)置8.3.2建立MDI菜單應(yīng)用程序運(yùn)行后界面效果如圖8.5所示。8.3.2建立MDI菜單應(yīng)用程序2.屬性設(shè)置將主菜單MenuStrip1的MdiWindowListItem屬性設(shè)置為“windowMenuItem”,即設(shè)置標(biāo)題為“窗口”的菜單項(xiàng)為可顯示MDI子窗體標(biāo)題列表。3.程序代碼設(shè)計(jì)在“錄入”菜單中有一個(gè)菜單項(xiàng),當(dāng)單擊“學(xué)生成績(jī)”菜單項(xiàng)時(shí),將創(chuàng)建一個(gè)新MDI子窗體“錄入學(xué)生成績(jī)”并顯示;在“幫助”菜單中有一個(gè)菜單項(xiàng),當(dāng)單擊“關(guān)于”菜單項(xiàng)時(shí),將創(chuàng)建一個(gè)新MDI子窗體“關(guān)于”并顯示;同時(shí),在“窗口”菜單項(xiàng)中可以顯示已打開的所有窗體標(biāo)題列表;當(dāng)單擊“退出”菜單項(xiàng)后,結(jié)束程序運(yùn)行,相應(yīng)的單擊事件程序如下:“錄入學(xué)生成績(jī)”菜單項(xiàng)事件代碼:PrivateSubimportscoreMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesimportscoreMenuItem.ClickDimform2AsNewForm2 '創(chuàng)建Form2窗體實(shí)例form2.MdiParent=Me '設(shè)置form2為MDI子窗體form2.WindowState=FormWindowState.Normal '子窗體最大化顯示form2.Show()EndSub8.3.2建立MDI菜單應(yīng)用程序“關(guān)于”菜單項(xiàng)事件代碼:PrivateSubaboutMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesaboutMenuItem.ClickDimform3AsNewForm3 '創(chuàng)建Form3窗體實(shí)例Form3.MdiParent=Me '設(shè)置form3為MDI子窗體Form3.WindowState=FormWindowState.Normal '子窗體最大化顯示Form3.Show()EndSub“退出”菜單項(xiàng)事件代碼:PrivateSubquitMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesquitMenuItem.ClickEnd '結(jié)束程序EndSub8.4綜合應(yīng)用【例8.4】在MDI父窗體上建立主菜單,通過菜單命令實(shí)現(xiàn)子窗體的建立與顯示,并顯示子窗體的菜單項(xiàng)。同時(shí),還提供對(duì)各打開的子窗體的不同形式的排列功能。另外,還建立一個(gè)工具欄,提供對(duì)所有的菜單功能的快速訪問。1.界面設(shè)計(jì)
建立第一個(gè)窗體(Forml),在其中添加一個(gè)主菜單控件(MenuStrip1)、一個(gè)工具欄控件(ToolStrip1);建立第二個(gè)窗體(Form2,錄入學(xué)生成績(jī))和第三個(gè)窗體(Form3,關(guān)于),在Form2中添加一個(gè)菜單控件(MenuStrip2)。將Forml設(shè)置為MDI主窗體,并設(shè)置其為啟動(dòng)窗體。表8.6、表8.7、表8.8分別列出了主窗體和子窗體對(duì)象和菜單的屬性設(shè)置,運(yùn)行后界面效果如圖8.6所示。8.4綜合應(yīng)用2.屬性設(shè)置將主菜單MenuStrip1的MdiWindowListItem屬性設(shè)置為“windowMenuItem”,即設(shè)置標(biāo)題為“窗口”的菜單項(xiàng)為可顯示MDI子窗體標(biāo)題列表。利用ToolStrip1控件的“項(xiàng)集合編輯器”為ToolStrip1控件添加6個(gè)按鈕,并為每個(gè)按鈕選擇適當(dāng)?shù)膱D標(biāo)。3.程序代碼設(shè)計(jì)在“錄入”菜單中單擊“學(xué)生成績(jī)”子菜單項(xiàng)時(shí),將創(chuàng)建一個(gè)新MDI子窗體“錄入學(xué)生成績(jī)”并顯示;在“幫助”菜單中有一個(gè)菜單項(xiàng),當(dāng)單擊“關(guān)于”菜單項(xiàng)時(shí),將創(chuàng)建一個(gè)新MDI子窗體“關(guān)于”并顯示;同時(shí),在“窗口”菜單項(xiàng)中可以顯示已打開的所有窗體標(biāo)題列表;當(dāng)單擊“退出”菜單項(xiàng)后,結(jié)束程序運(yùn)行,相應(yīng)的單擊事件程序如下:“錄入學(xué)生成績(jī)”菜單項(xiàng)事件代碼:PrivateSubimportscoreMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_ HandlesimportscoreMenuItem.ClickDimform2AsNewForm2 '創(chuàng)建Form2窗體實(shí)例form2.MdiParent=Me '設(shè)置form2為MDI子窗體form2.WindowState=FormWindowState.Normal '子窗體最大化顯示form2.Show()EndSub8.4綜合應(yīng)用“關(guān)于”菜單項(xiàng)事件代碼:PrivateSubaboutMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesaboutMenuItem.Click Dimform3AsNewForm3 '創(chuàng)建Form3窗體實(shí)例 Form3.MdiParent=Me '設(shè)置form3為MDI子窗體 Form3.WindowState=FormWindowState.Normal '子窗體最大化顯示 Form3.Show()EndSub“退出”菜單項(xiàng)事件代碼:PrivateSubquitMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_
HandlesquitMenuItem.Click End '結(jié)束程序EndSub8.4綜合應(yīng)用“窗口”菜單項(xiàng)的程序設(shè)計(jì):在“窗口”菜單中有三個(gè)菜單項(xiàng),當(dāng)單擊“層疊”菜單項(xiàng)時(shí),將按層疊方式排列所有子窗口;當(dāng)單擊“水平平鋪”菜單項(xiàng)時(shí),將按水平平鋪方式排列所有子窗口;當(dāng)單擊“垂直平鋪”菜單項(xiàng)時(shí),將按垂直平鋪方式排列所有子窗口。其中層疊方式執(zhí)行效果如圖8.7所示。8.4綜合應(yīng)用相應(yīng)的單擊事件程序如下:“層疊”菜單項(xiàng)事件代碼:PrivateSubcascadeMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_ HandlescascadeMenuItem.Click Me.LayoutMdi(MdiLayout.Cascade) '層疊方式排列EndSub“水平平鋪”菜單項(xiàng)事件代碼:PrivateSubhorizonMenuItem_Click(ByValsenderAsSystem.O
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 會(huì)議贊助協(xié)議合同范本
- 農(nóng)村魚塘轉(zhuǎn)讓合同范本
- 加盟合同范本烤鴨
- 勞務(wù)合同范本拼音寫
- 上海理財(cái)合同范本
- 包子店員工合同范本
- 勞務(wù)補(bǔ)助合同范本
- 修補(bǔ)圍網(wǎng)合同范本
- 公積金擔(dān)保合同范本
- 出租醫(yī)療服務(wù)合同范本
- 普通地質(zhì)學(xué)教材
- 多重耐藥菌相關(guān)知識(shí)
- 2021年云南省中考地理試卷(附答案詳解)
- 教師資格證幼兒教育真題及答案近五年合集
- 物業(yè)管理工作流程圖全套2
- 防蠅防鼠防蟲害情況記錄表
- 化學(xué)檢驗(yàn)工高級(jí)工理論知識(shí)試題題及答案
- 收養(yǎng)協(xié)議書真實(shí)范本模板
- 教程教科書i2analysts notebook8培訓(xùn)中文版
- 國(guó)家電網(wǎng)公司電力安全工作規(guī)程 配電部分 試行
- 杭州市住宅房屋裝修備案表
評(píng)論
0/150
提交評(píng)論