Creating a Window Menu
4.4.2 Creating a Window Menu
MDI applications usually have a main-menu item called Window. On this menu appear standard items for cascading, tiling, and activating child windows and arranging the icons of minimized child windows. Figur e 4- 8 shows a typical example. Figure 4-8. A typical Window menu Such a menu is easy to create using the support in Windows Forms. Assuming that you were to do it programmatically, Ex am ple 4- 7 shows a revised version of Ex am ple 4- 6 that has been modified to include a Window menu; the added code is shown in boldface. For details on how to work with menus from the Visual Studio IDE, as well as programmatically, see Sect ion 5.5 in Chapt er 5 . Example 4-7. An MDI application with a Window menu Imports System Imports System.Windows.Forms Public Module AppModule Public Sub Main Application.RunNew MainForm 150 End Sub End Module Public Class MainForm Inherits Form Declare MainForms main menu Private myMainMenu As MainMenu Declare Windows menu Protected WithEvents mnuWindow As MenuItem Protected WithEvents mnuTileHoriz As MenuItem Protected WithEvents mnuCascade As MenuItem Protected WithEvents mnuTileVert As MenuItem Protected WithEvents mnuArrangeAll As MenuItem Public Sub New Set the main window caption. Text = My MDI Application Set this to be an MDI parent form. IsMdiContainer = True Create main menu MyMainMenu = New MainMenu Define menu items mnuWindow = New MenuItem mnuTileHoriz = New MenuItem mnuTileVert = New MenuItem mnuCascade = New MenuItem mnuArrangeAll = New MenuItem Set menu properties mnuWindow.Text = Window mnuWindow.MdiList = True mnuTileHoriz.Text = Tile Horizontally mnuTileVert.Text = Tile Vertically mnuCascade.Text = Cascade mnuArrangeAll.Text = Arrange Icons Add items to menu MyMainMenu.MenuItems.AddmnuWindow mnuWindow.MenuItems.AddmnuCascade mnuWindow.MenuItems.AddmnuTileHoriz mnuWindow.MenuItems.AddmnuTileVert mnuWindow.MenuItems.AddmnuArrangeAll Assign menu to form Me.Menu = MyMainMenu Create a child form. Dim myChild As New DocumentFormMy Document, Me myChild.Show End Sub Public Sub mnuCascade_Clicko As Object, e As EventArgs _ Handles mnuCascade.Click LayoutMdiMdiLayout.Cascade End Sub Public Sub mnuTileHoriz_Clicko As Object, e As EventArgs _ Handles mnuTileHoriz.Click LayoutMdiMdiLayout.TileHorizontal End Sub Public Sub mnuTileVert_Clicko As Object, e As EventArgs _ Handles mnuTileVert.Click 151 LayoutMdiMdiLayout.TileVertical End Sub Public Sub mnuArrangeAll_Clicko As Object, e As EventArgs _ Handles mnuArrangeAll.Click LayoutMdiMdiLayout.ArrangeIcons End Sub End Class Public Class DocumentForm Inherits Form Public Sub NewByVal name As String, ByVal parent As Form Set the document window caption. Text = name Set this to be an MDI child form. MdiParent = parent End Sub End Class To add a Window menu to the parent form of an MDI application, perform the following steps. First, add a menu item to the MDI parent forms main menu, setting its Text property to anything desired usually Window and its MdiList property to True . It is the MdiList property that makes the Window menu a Window menu. Setting the MdiList property to True causes the Windows Forms framework to add and delete menu items to and from this menu item as necessary. This in turn will always display the current list of MDI child windows in the menu. Next, add menu items for Cascade, Tile Horizontally, Tile Vertically, and Arrange Icons. In the Click event handler for each of these menu items, call the Form classs LayoutMdi method, passing the appropriate parameter value for the desired action. The syntax of the LayoutMdi method is: Public Sub LayoutMdiByVal value As MdiLayout The methods single argument must be a value from the MdiLayout enumeration defined in the System.Windows.Forms namespace. The values in this enumeration are: ArrangeIcons Indicates that the icons for the minimized MDI child windows should be neatly arranged. Cascade Indicates that the MDI child windows should be cascaded displayed overlapping each other. TileHorizontal Indicates that the MDI child windows should be tiled displayed without overlapping, with each child window filling the width of the MDI parent. TileVertical Indicates that the MDI child windows should be tiled, with each child window filling the height of the MDI parent. 1524.4.3 Merging Menus
Parts
» VB.NET - (O'Reilly) Programming Visual Basic NET
» What Is the Microsoft .NET Framework?
» hello, world An Example Visual Basic .NET Program
» Hello, Windows An Example Visual Basic .NET Program
» Hello, Browser An Example Visual Basic .NET Program
» Source Files Identifiers The Visual Basic .NET Language
» Numeric Literals String Literals Character Literals
» Date Literals Boolean Literals Nothing Summary of Literal Formats
» Custom Types Collections Types
» The Namespace Statement The Imports Statement
» Symbolic Constants Scope The Visual Basic .NET Language
» Access Modifiers Assignment The Visual Basic .NET Language
» Unary Operators Arithmetic Operators
» Relational Operators Operators and Expressions
» String-Concatenation Operators Bitwise Operators
» Logical Operators Operator Precedence
» Call Exit Branching Statements
» Goto If RaiseEvent Branching Statements
» Return Select Case Branching Statements
» For Each Iteration Statements
» Object Instantiation and New Constructors
» Handling Events Inheritance Classes
» Passing arrays as parameters
» Variable-length parameter lists Main method
» Implementing interface methods Overriding inherited methods
» Overloading Overloading inherited methods
» The MyBase Keyword Nested Classes Destructors
» Interfaces The Visual Basic .NET Language
» Enumerations The Visual Basic .NET Language
» Exceptions The Visual Basic .NET Language
» Delegates The Visual Basic .NET Language
» Using Events and Delegates Together
» Creating Custom Attributes Attributes
» Standard Modules Conditional Compilation
» Summary The Visual Basic .NET Language
» Common Language Infrastructure CLI and Common Language Runtime CLR
» Global Assembly Cache GAC Comparison of Assemblies, Modules, and Namespaces
» Application Domains Common Language Specification CLS
» Intermediate Language IL and Just-In-Time JIT Compilation Metadata
» Finalize Memory Management and Garbage Collection
» Dispose Memory Management and Garbage Collection
» A Brief Tour of the .NET Framework Namespaces
» Configuration File Format Configuration
» Configuration Section Groups The appSettings Section
» Adding event handlers Creating a Form in Code
» Handling Form Events Windows Forms I: Developing Desktop Applications
» Relationships Between Forms Windows Forms I: Developing Desktop Applications
» Merging Menus MDI Applications
» Detecting MDI Child Window Activation
» Component Attributes Windows Forms I: Developing Desktop Applications
» The Graphics Class 2-D Graphics Programming with GDI+
» The Pen Class 2-D Graphics Programming with GDI+
» The Brush Class 2-D Graphics Programming with GDI+
» System colors The Color Structure
» Alpha Blending 2-D Graphics Programming with GDI+
» Antialiasing 2-D Graphics Programming with GDI+
» The PrintPageEventArgs Class Printing
» The OnBeginPrint and OnEndPrint Methods Choosing a Printer
» The PageSettings Class Printing
» The PrinterSettings Class Printing
» Page Setup Dialog Box Print Preview
» Summary Windows Forms I: Developing Desktop Applications
» The Button Class The CheckBox Class The ComboBox Class
» The DateTimePicker Class The GroupBox Class The ImageList Class
» The Label Class The LinkLabel Class
» The ListBox Class Common Controls and Components
» The ListBox.ObjectCollection Class
» The ListView Class Common Controls and Components
» The MonthCalendar Class Common Controls and Components
» The Panel Class The PictureBox Class
» The RadioButton Class Common Controls and Components
» The TextBox Class The Timer Class
» Other Controls and Components
» Control Events Windows Forms II: Controls, Common Dialog Boxes, and Menus
» The Anchor Property Form and Control Layout
» Controlling dock order The Dock Property
» The Splitter control The Dock Property
» ColorDialog FontDialog OpenFileDialog Common Dialog Boxes
» PageSetupDialog PrintDialog PrintPreviewDialog SaveFileDialog
» Adding Menus in the Visual Studio .NET Windows Forms Designer
» Programmatically Creating Menus Menus
» Building Controls from Other Controls
» Building Controls That Draw Themselves Building Nonrectangular Controls
» Summary Windows Forms II: Controls, Common Dialog Boxes, and Menus
» Setting control properties using attributes Adding event handlers
» AutoEventWireup Handling Page Events
» The Button control Web Controls
» The CheckBox control The DropDownList control
» The Image control The Label control
» The ListBox control Web Controls
» The RadioButton control Web Controls
» The Table control Web Controls
» The TextBox control Web Controls
» Other web controls Web Controls
» HTML Controls Handling Control Events
» Programmatically Instantiating Controls More About Server Controls
» More About Validation-Control Tag Attributes
» Using Validation-Control Properties Providing a Summary View of Validation Failures
» Performing Custom Validation Adding Validation
» Using Directives to Modify Web Page Compilation
» The Server Object ASP.NET Objects: Interacting with the Framework
» The Application Object The Session Object The Cache Object The Request Object
» The Response Object ASP.NET Objects: Interacting with the Framework
» Discovering Browser Capabilities ASP.NET and Web Forms: Developing Browser-Based Applications
» The Session Object Maintaining State
» The Application Object Maintaining State
» Session and Application Startup and Shutdown global.asax Compiles to a Class
» Adding Global Objects Application-Level Code and global.asax
» ASP.NET authorization Authorization
» Windows NTFS authorization Code-access authorization
» IUSR_ComputerName Impersonation Accessing Network Resources
» User Controls Designing Custom Controls
» Creating a custom server control using Visual Studio .NET
» Creating a custom server control in code Using a custom server control in Visual Studio .NET
» Summary ASP.NET and Web Forms: Developing Browser-Based Applications
» The WebService Attribute The WebMethod Attribute
» Testing a Web Service with a Browser
» Consuming a Web Service in Visual Studio .NET
» Consuming a Web Service in Notepad
» Synchronous Versus Asynchronous Calls
» Web-Service Descriptions Web-Service Discovery
» Limitations of Web Services Summary
» A Brief History of Universal Data Access Managed Providers
» Connecting to a SQL Server Database
» Connecting to an OLE DB Data Source
» The DataSet Class Finding Tables
» Finding Column Values Finding Column Definitions Changing, Adding, and Deleting Rows
» Writing Updates Back to the Data Source
» Relations Between DataTables in a DataSet
» The DataSets XML Capabilities
» Binding a DataSet to a Windows Forms DataGrid
» Binding a DataSet to a Web Forms DataGrid
» Typed DataSets ADO.NET: Developing Database Applications
» Reading Data Using a DataReader
Show more