CSCI 3131.
01
Chapter 7 Multiple Forms, Standard Modules and Menus
Instructor: Bindra Shrestha
University of Houston – Clear Lake
Fall 2010
Acknowledgement
Dr. Xinhua Chen
And
Starting Out with Visual Basic 2010
by Tony Gaddis and Kip Irvine
Topics
Multiple Forms
Standard Modules
Menus
Introduction
• How to add multiple forms to a project
• How to create a standard module
– Holds procedures and functions not associated with
a specific form
• Creating a menu system
– Context menus
– With commands and submenus that the user may
select from
Form Names
• Each form has Name property
– Programs refer to a form by this name
– VB assigns name Form1
– Name property allows us
to change form name
– Standard prefix is frm
• Each form also has a file name (.vb extension)
– Forms are stored on disk using this name
– Right click in Solution Explorer, and select Rename
to change the file name
Adding a New Form to a Project
• Click Add New Item on the toolbar
– Or Project on menu, then Add Windows Form
• Add New Item dialog box appears
• Click on Windows Form
• Change the default name
• Click the Add button
• New form now appears in:
– Design window
– Solution Explorer
Switching from Forms to Form Code
• Design window has two tabs for each form
– One for form design
– One for the code associated with a form
• If you have two forms
frmMain & frmError, you
may select these tabs:
– Error form design
– Error form code
– Main form design
– Main form code
Removing a Form
• A form may also be removed from a project
• To remove a form and delete its file from disk:
– Right-click on the form in Solution Explorer
– Click Delete on the pop-up menu
• To remove a form but leave its file on disk:
– Right-click on the form in Solution Explorer
– Click Exclude from Project on the pop-up menu
Changing the Startup Form
• First form in a project becomes startup object
– Form displayed when application starts
• Right-click project in Solution Explorer to
change startup form
– Click Properties
– Click down arrow in
Startup Form box
– Select new startup
form from list
– Click Ok
Classes and Instances
• The form design is a class
– It’s only a design or description of a form
– Think of it like a blueprint
• A blueprint is a detailed description of a house
• A blueprint is not a house
• The form design can be used to create one or more
instances of the form
– Like building a house from the blueprint
• In order to use a form in a program, we must first
create an instance of it from the design
Creating an Instance of a Form
• Dim statement creates an instance of a form
Dim ObjectVariable As New ClassName()
• To create an instance of frmError:
Dim errorForm As New frmError()
– frmError is the form design name (the class)
– New frmError creates an instance of the form
– Variable errorForm refers to the form in RAM
– errorForm used to perform actions on the form
• The form is not yet visible, but it now exists
• Show or ShowDialog makes the form visible
Modal Forms & ShowDialog Method
• A modal form prevents the user from changing
focus to another form in the application as long
as it remains open
• For example:
errorForm.ShowDialog()
– Variable errorForm represents an instance of
frmError as shown in the previous slide
– The ShowDialog method displays the form instance
named errorForm as a modal form
• Must close errorForm in order to change focus
to another form in the application
Modeless Forms & Show Method
• A modeless form allows the user to change
focus at will to another form in the application
while the modeless form remains open
• For example:
errorForm.Show()
– Variable errorForm represents an instance of
frmError as shown previously
– The Show method displays the form instance
named errorForm as a modeless form
• Can change focus to other forms in the
application while errorForm remains open
Closing a Form
• A form may close itself using the Close method and
referring to itself using the keyword "Me":
Me.Close()
• As in
Private Sub btnClose_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnClose.Click
Me.Close()
End Sub
Hiding a Form
• Closing a Form removes it from memory
• To retain the form in memory but remove it from the
display, use the Hide Method:
Me.Hide()
• To redisplay a hidden form use the ShowDialog or
Show method
More on Modal and Modeless Forms
• Display of a modal form causes execution of calling
statements to halt until form is closed
statements
messageForm.ShowDialog()
' Statements below will not execute
' until the Form is closed
statements
• Display of a modeless form allows execution to continue
statements
messageForm.Show()
' Statements below will execute
' immediately after Form is displayed
statements
• Tutorial 7-1 demonstrates these differences
The Form Load Event
• The Load event is triggered just before the form is
initially displayed
• Any code needed to prepare the form prior to display
should be in the Load event
• If some controls should not be visible initially, set
their Visible property in the Load event
• Double click on a blank area of the form to set up a
Load event as shown below
Private Sub frmMain_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
The Form Activated Event
• The Activated event is triggered when focus switches
to the form from another form or application
• The Load event is triggered once when the form is
initially displayed
• The Activated event is also triggered when the form is
initially displayed
– Occurs immediately after the Load event
• The Activated event may be triggered many more
times, each time focus shifts back to the form
Creating an Activated Event Handler
• Create an Activated event handler by selecting frmMain events
from the class name drop-down list
• Then select the Activated Event from the method name drop-
down list
The Form Closing Event
• The Closing event is triggered as the form is being
closed, but before it has closed
• The Closing event can be used to ask the user if they
really want the form closed
Private Sub frmMain_Closing(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles MyBase.Closing
If MessageBox.Show("Are you Sure?", "Confirm", _
MessageBoxButtons.YesNo) = DialogResult.Yes Then
e.Cancel = False 'continue, close form
Else
e.Cancel = True 'cancel form close
End If
End Sub
The Form Closed Event
• Closed event triggered after a form is closed
• Note that it is now too late to prevent the form from
being closed
– Form is already closed when event fires
• Create the Closing and Closed events in the same way
as the Activated event
– Click the class name drop-down list
– Select formname Events
– Click desired event from the method drop-down list
Using Objects on a Different Form
• When code in a form refers to an object, it is assumed
that object is in that same form
• You can refer to an object in another form
– Simply preface the object name with the variable name
associated with that form
– frmGreeting has a control named lblMessage
– Set Text property to Hello before displaying
Dim greetingForm As New frmGreeting()
greetingForm.lblMessage.Text = "Hello!"
greetingForm.ShowDialog()
Class-level Variables in a Form
• Class-level variables are Private by default
• Private variables are not accessible by code in other
forms
• To gain access to variables from other forms, a
variable must be declared as:
– Class level
– Public
Public sngTotal As Single
' Instead of the declaration
' Dim sngTotal As Single
Standard Modules
• A separate .vb file not associated with a form
• Contains no Event Procedures
• Used for code to be shared by multiple forms
• Procedures, functions, or variables used in one form
should be declared in that form
• Procedures, functions, or variables used by many
forms may be declared in a standard module
Syntax of Standard Module
Module ModuleName
[Module Contents]
End Module
• ModuleName is normally same as .vb file
• Module Contents are sub procedures and functions
which can be
– Private - used only by procedures or functions in that
module
– Public - can be called from anywhere in your Visual
Studio project
• If not specified, a procedure is public
Adding a Standard Module
• Click Add New Item on the toolbar
– Or Project on menu, then Add Module
• Add New Item dialog box appears
• Click on Module under Templates
• Change the default name if you choose
• Click the Add button
• A new empty module now appears in:
– Code window
– Solution Explorer
Module Level Variables
• These are declared within a module
• But outside of any functions or sub procedures in that
module
• If declared Dim or Private, the scope is the module
(called module scope)
• If declared Public, the scope is the entire application
(called global scope)
• Tutorial 7-3 demonstrates the use of a standard
module in an application
Application with No Startup Form
• Must change the startup form to Sub Main
• Main must be a public sub procedure
• It must be in a standard module
• When the application starts
– No Form will be displayed
– Main will be given control
Components of a Menu System
• Each drop-down menu has a menu name
• Each drop-down menu has a list of actions or menu
commands that can be performed
• Some commands may lead to a submenu
Components of a Menu System
• Actions may be performed using a key or key combination
called a shortcut key
• A checked menu command toggles between the checked
(if on) and unchecked (if off) states
• A separator bar helps group similar commands
MenuStrip Control
• A MenuStrip control adds a menu to a form
– Double-click on the MenuStrip icon in the Menus &
Toolbars section of the Toolbox
• The MenuStrip control is displayed in the component
tray (bottom of Design window)
• A MenuStrip can have many ToolStripMenuItem
objects:
– Each represents a single menu command
– Name property - used by VB to identify it
– Text property – text displayed to the user
ToolStripMenuItem Object Names
• Should begin with mnu
• Then by convention are named based on their
text property and position in the menu
hierarchy
– mnuFile
– mnuFileSave
– mnuFilePrint
– mnuFileExit
ToolStripMenuItem Text Properties
• The text property holds the menu item
description that is displayed to the user
• If an access key is assigned, that letter must be
preceded with an ampersand
Object Name Access Key Text Property
mnuFile F &File
mnuFileSave S &Save
mnuFilePrint P &Print
mnuFileExit X E&xit
Menu Designer
• The Menu Designer allows visual menu
creation by filling in boxes with the menu text:
Enter the
next menu
Enter first name
command in
the File menu
Shortcut Keys
• Keyboard based shortcuts that execute menu
commands without using the menu system
• For example, ctrl-c to Copy to the clipboard
• These are set via the Shortcut property of each
menu item
• A shortcut is displayed to the user only if the
ShowShortcut property is set to true
Checked Menu Items
• Some menu items just turn a feature on or off
– For example, an alarm for a clock
• To create a checked menu item:
– Set CheckOnClick property to true
– Set Checked property to True if feature should be
on when the form is initially displayed
• Can test a checked menu item in code
If mnuSettingsAlarm.Checked Then
MessageBox.Show("Wake Up!")
End If
Disabled Menu Items
• A menu item is grayed out (disabled) with the
Enabled property
• Paste option is initially disabled and only
enabled after something is cut or copied
– Code initially disables the Paste option
mnuEditPaste.Enabled = False
– Following a cut or copy, Paste is enabled
mnuEditPaste.Enabled = True
Adding Separator Bars
• Right-click menu item, select Insert Separator
– Separator inserted above the menu item
• Or create a menu item with one hyphen (-) as
the text property
Submenus
• When selecting a menu item in the designer, a
Type Here box appears to the right
– Begin a submenu by setting up this menu item
• If a menu item has a submenu, a solid right-
pointing arrow will be shown for this item
Inserting, Deleting, & Rearranging
• To insert a new menu item within the list
– Right-click the item to follow the new one
– Select Insert then MenuItem from pop-up menu
• Use Menu Designer to add new menu items at
the end by entering the text to appear
• To remove a menu item
– Right-click on the item
– Choose Delete from the pop-up menu
• The Menu Designer can rearrange items using a
click and drag approach
ToolStripMenuItem Click Events
• Menus and submenus require no code
• Commands must have a click event procedure
– Double click on the menu item
– Event procedure created in the code window
– Programmer supplies the code to execute
• Double click the menu item object
mnuFileExit, then add a Me.Close command as
shown below
Private Sub mnuFileExit_Click(ByVal sender as System.Object, _
ByVal e as System.EventArgs) Handles mnuFileExit.Click
Me.Close() Programmer supplied code
End Sub Click event procedure created by VB
Standard Menu Items
• In general follow the conventions that most
application menu systems use
– File is leftmost item with access key Alt-F
– File item has Exit command, access key Alt-X
– Help is the rightmost item
– Help menu has an About command
• Tutorial 7-4 demonstrates how to create a
menu system
Context Menus
• A pop-up menu that appears on a right-click
• Context menus are designed for a particular
control or set of controls
• To set up a Context Menu:
– Double-click ContextMenuStrip control in the
ToolBox to add it to the component tray
– Build menu system using Menu Designer
– Build Click event procedures as needed
– Use ContextMenuStrip property of form controls to
link desired control(s) to the menu