450 likes | 636 Views
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
E N D
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 usto 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, youmay 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 inStartup 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 • To create an instance of frmError: • frmError is the form design name (the class) • NewfrmError 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 Dim ObjectVariable As New ClassName() Dim errorForm As New frmError()
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: • 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 errorForm.ShowDialog()
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: • 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 errorForm.Show()
Closing a Form • A form may close itself using the Close method and referring to itself using the keyword "Me": • As in Me.Close() 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: • To redisplay a hidden form use the ShowDialog or Show method Me.Hide()
More on Modal and Modeless Forms • Display of a modal form causes execution of calling statements to halt until form is closed • Display of a modeless form allows execution to continue • Tutorial 7-1 demonstrates these differences statements messageForm.ShowDialog() ' Statements below will not execute ' until the Form is closed statements statements messageForm.Show() ' Statements below will execute ' immediately after Form is displayed statements
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 desiredevent 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 NameAccess KeyText PropertymnuFile F &FilemnuFileSave S &Save mnuFilePrint P &PrintmnuFileExit X E&xit
Menu Designer • The Menu Designer allows visual menu creation by filling in boxes with the menu text: Enter the next menu name Enter first 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 • Following a cut or copy, Paste is enabled mnuEditPaste.Enabled = False 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() End Sub Programmer supplied code 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