Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 43

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

You might also like