Формы MDI
Меню Window реализуется в родительском окне, причем его код может быть достаточно простым:
Public Sub InitializeMenu() Dim mnuWindow As New MenuItem("&Window") MainMenu1.MenuIterns.Add(mnuWindow) mnuWindow.MenuItems.AddCNew Menultem _ ("&Cascade", AddressOf WindowCascade_Clicked)) mnuWindow.MenuItems.Add(New Menultem ("Tile &Horizontal", AddressOf WindowTileHoriz_C1icked)) mnuWindow.MenuItems.Add(New Menultem _ ("Tile &Vertical". AddressOf WindowTileVert_Clicked)) mnuWindow.MdiList = True End Sub Protected Sub WindowCascade_Clicked(ByVal Sender As Object. ByValeAs System.EventArgs) Me.LayoutMdi(MdiLayout.Cascade) End Sub Protected Sub WindowTileHoriz_Clicked(ByVal Sender As Object._ ByVal e As System.EventArgs) Me.LayoutMdi(MdiLayout.TileHorizonta1) End Sub Protected Sub WindowTileVert_Clicked(ByVal Sender As Object, ByVal e As System.EventArgs) Me.LayoutMdi(MdiLayout.TileVertica1) End Sub
Примерный вид окна, полученного при вызове InitializeMenu для формы из предыдущего примера, показан на рис. 8.13.
Рис. 8.13. Типичное меню Window в приложении MDI
Чтобы оповестить родительскую форму об активизации дочернего окна, следует зарегистрировать обработчик для события mdiChildActivate. Активизируемое окно определяется при помощи свойства ActiveMdiChild класса Form. Например, в следующем фрагменте создается обработчик для вывода в строке состояния (элемент StatusBar) родительской формы содержимого заголовка дочернего окна:
AddHandler Me.MdiChildActivate.AddressOf Me.MdiChildActivated.
Остается лишь определить следующую процедуру:
Protected Sub MdiChi1dActivated(sender As object, e As System.EventArgs) If (Me.ActiveMdiChild < > Nothing) Then statusBarl.Text Me.ActiveMdiChild.Text End If End Sub