Download presentation
Presentation is loading. Please wait.
Published byTabitha Robinson Modified over 9 years ago
1
C# Programming: From Problem Analysis to Program Design1 9 Programming Based on Events
2
C# Programming: From Problem Analysis to Program Design2 Chapter Objectives Explore event-handling procedures in C# by writing and registering event-handler methods Create applications that use the ListBox control object to enable multiple selections from a single control Contrast ComboBox to ListBox objects by adding both types of controls to an application
3
C# Programming: From Problem Analysis to Program Design3 Chapter Objectives ( continued ) Add Menu and TabControl control options to Window forms and program their event-handler methods Wire multiple RadioButton and CheckBox object events to a single event-handler method
4
C# Programming: From Problem Analysis to Program Design4 Delegates Delegates store references (addresses) to methods, as opposed to storing actual data –Delegates form the foundation for events in C# Declaration for a delegate looks more like a method declaration than a class definition –Except, delegate declaration has no body –Declaration begins with the keyword delegate Declaration ends with a parenthesized list of parameters
5
C# Programming: From Problem Analysis to Program Design5 Delegates ( continued ) Delegate declaration example delegate string ReturnsSimpleString( ); Delegate signature –Identifies what types of methods the delegate represents –The return type of a delegate becomes part of its identifying signature Above Example represents methods that return a string and require no argument static string EndStatement( ) static string ToString( ) static string ReturnSaying( )
6
C# Programming: From Problem Analysis to Program Design6 Delegates ( continued ) Associate delegate with method(s) by creating delegate instance(s) –Example ReturnsSimpleString saying3 = new ReturnsSimpleString(EndStatement); Constructor for delegate of the delegate class always takes just parameter – Name of a method for the constructor to reference
7
C# Programming: From Problem Analysis to Program Design7 Delegates ( continued ) Delegate identifier references the method sent as argument to constructor –Any use of delegate identifier now calls the method Methods are said to be wrapped by the delegate –Delegate can wrap more than one method, called a multicast delegate += and -= operators are used to add/remove methods to/ from the delegate chain or invocation list Multicast delegates must have a return type of void
8
C# Programming: From Problem Analysis to Program Design 8 Relationship of Delegates to Events Delegates are used for event-driven application –Delegate acts as intermediary between objects that are raising or triggering an event, and the object that captures the event and responds to it. During compilation, the method or methods that will be called are not determined Events as special forms of delegates –Place a reference to event-handler methods inside a delegate –Once reference is made, or event is registered, delegate is used to call event-handler method when an event like a button click is fired
9
C# Programming: From Problem Analysis to Program Design9 Event Handling in C# Form Designer in Visual Studio did much of the work for you –Double-clicked on a Button control object during design 1) Click event is registered as being of interest 2) An event-handler method heading is generated –Two steps form event wiring process Wire an event: associate (identify) a method to handle its event
10
C# Programming: From Problem Analysis to Program Design10 Event Handling in C# ( continued ) Code associates the methods with an event this.button1.Click += new System.EventHandler(this.button1_Click); this.button2.Click += new System.EventHandler(this.button2_Click); –button1_Click and button2_Click are methods –Keyword this is added to all code generated by Visual Studio to indicate the current instance of a class
11
C# Programming: From Problem Analysis to Program Design11 ListBox Control Objects Displays list of items for single or multiple selections –Scroll bar is automatically added when total number of items exceeds the number that can be displayed Can add or remove items at design time or dynamically at run time Includes number of properties and events –The Items property used to set initial values Click on (Collections) to add items
12
C# Programming: From Problem Analysis to Program Design12 Adding a ListBox Control Object Add ListBox control, then click on Items property (Collection) to type entries Figure 9-2 String Collection Editor
13
C# Programming: From Problem Analysis to Program Design13 ListBox Control Objects ( continued ) Name property –Useful to set for program statements Sorted property –Set to true to avoid having to type values in sorted order Register an event for the ListBox –Might want to know when the item selection changes –Double-clicking on any control registers its default event for the control –SelectedIndexChanged: default event for ListBox
14
C# Programming: From Problem Analysis to Program Design14 ListBox Control Objects ( continued ) Register its event with the System.EventHandler this.lstBoxEvents.SelectedIndexChanged += new System.EventHandler (this.listBox1_SelectedIndexChanged); Visual Studio adds event-handler method private void listBox1_SelectedIndexChanged (object sender, System.EventArgs e) { }
15
C# Programming: From Problem Analysis to Program Design15 ListBox Control Objects ( continued ) To retrieve string data from ListBox use Text property this.txtBoxResult.Text = this.lstBoxEvents.Text; –Place in method body –When event fires, selection retrieved and stored in TextBox object
16
C# Programming: From Problem Analysis to Program Design16 ListBox Control Objects ( continued ) Figure 9-3 SelectedIndexChanged event fired
17
C# Programming: From Problem Analysis to Program Design17 Multiple Selections with a ListBox SelectionMode Property has values of MultiSimple, MultiExtended, None, and One –MultiSimple: use the spacebar and click the mouse –MultiExtended can also use Ctrl key, Shift key, and arrow keys foreach(string activity in lstBoxEvents.SelectedItems) { result += activity + " "; } this.txtBoxResult.Text = result;
18
C# Programming: From Problem Analysis to Program Design18 ListBox Control Objects ( continued ) Figure 9-4 Multiple selections within a ListBox object
19
C# Programming: From Problem Analysis to Program Design19 ListBox Control Objects ( continued ) SelectedItem and SelectedItems return objects –Store numbers in the ListBox, once retrieved as objects, cast the object into an int or double for processing Adding items to a ListBox at run time by using Add( ) method with the Items property lstBoxEvents.Items.Add("string value to add"); private void btnNew_Click(object sender, System.EventArgs e) { lstBoxEvents.Items.Add(txtBoxNewAct.Text); }
20
C# Programming: From Problem Analysis to Program Design20 Figure 9-5 Add( ) method executed inside the buttonClick event ListBoxExample
21
C# Programming: From Problem Analysis to Program Design21
22
C# Programming: From Problem Analysis to Program Design22 ListBox Control Properties
23
C# Programming: From Problem Analysis to Program Design23 ListBox Control Methods
24
C# Programming: From Problem Analysis to Program Design24 Note that ListBox control inherits members from Control class ListBox Control Methods ( continued )
25
C# Programming: From Problem Analysis to Program Design25 ComboBox Controls Extra TextBox object with ComboBox – User selects from list or types new value Figure 9-6 ComboBox and ListBox objects
26
C# Programming: From Problem Analysis to Program Design26 ComboBox Controls ( continued ) Top line left blank in ComboBox when DropDownStyle property is set to DropDown (default setting) Figure 9-7 ComboBox list of choices
27
C# Programming: From Problem Analysis to Program Design27 Handling ComboBox Events ComboBox only allows a single selection to be made Default event-handler method: SelectedIndexChanged( ) –Same as ListBox control object Could register KeyPress( ) event-handler method –BUT, event is fired with each and EVERY keystroke
28
C# Programming: From Problem Analysis to Program Design28 Programming Event Handlers Since ListBox object allows multiple selections, Text property cannot be used –Text ONLY gets the first one selected Use the SelectedItems, SelectedIndices, or Items to retrieve a collection of items selected –Zero-based structures –Access them as you would access an element from an array –SelectedIndices is a collection of indexes
29
C# Programming: From Problem Analysis to Program Design29 Programming Event Handlers ( continued ) Figure 9-8 KeyPress and SelectedIndexChanged events fired KeyPress( ) event- handler method fired with each keystroke
30
C# Programming: From Problem Analysis to Program Design30 MenuStrip Controls Offers advantage of taking up minimal space Drag and drop MenuStrip object from toolbox to your form –Icon representing MenuStrip placed in Component Tray Select MenuStrip object to set its properties To add the text for a menu option, select the MenuStrip icon and then click in the upper-left corner of the form
31
C# Programming: From Problem Analysis to Program Design31 MenuStrip Controls ( continued ) Drag MenuStrip control to form, then click here to display Menu structure Figure 9-9 First step to creating a menu
32
C# Programming: From Problem Analysis to Program Design32 MenuStrip Control Objects Ampersand (&) is typed between the F and o for the Format option to make Alt+o shortcut for Format Figure 9-10 Creating a shortcut for a menu item
33
C# Programming: From Problem Analysis to Program Design33 MenuStrip Control Objects ( continued ) To create separators, right-click on the text label (below the needed separator) Select Insert Separator Figure 9-11 Adding a separator
34
C# Programming: From Problem Analysis to Program Design34 MenuStrip Control Objects ( continued ) Figure 9-12 Setting the Property for the ToolTip control Set the text to be displayed when the cursor is rested on top of the control
35
C# Programming: From Problem Analysis to Program Design35 Wire Methods to Menu Option Event Set the Name property for each menu option –Do this first, then wire the event Click events are registered by double-clicking on the Menu option When the menu option is clicked, the event triggers, happens, or is fired
36
C# Programming: From Problem Analysis to Program Design36 Adding Predefined Standard Windows Dialog Boxes Included as part of.NET Dialog boxes that look like standard Windows dialog boxes –File Open, File Save, File Print, and File Print Preview –Format Font –Format Color dialogs
37
C# Programming: From Problem Analysis to Program Design37 Adding Predefined Standard Windows Dialog Boxes – Color private void menuColor_Click(object sender, System.EventArgs e) { colorDialog1.Color = lblOutput.ForeColor; if (colorDialog1.ShowDialog( ) != DialogResult.Cancel ) { lblOutput.ForeColor = colorDialog1.Color; } Retrieves the current ForeColor property setting for the Label object Checks to see if Cancel button clicked Set to selection made
38
C# Programming: From Problem Analysis to Program Design38 Adding Predefined Standard Windows Dialog Boxes – Color ( continued ) Figure 9-14 Color dialog box menu option
39
C# Programming: From Problem Analysis to Program Design39 Adding Predefined Standard Windows Dialog Boxes – Font private void menuFont_Click (object sender, System.EventArgs e) { fontDialog1.Font = lblOutput.Font; if (fontDialog1.ShowDialog( ) != DialogResult.Cancel ) { lblOutput.Font = fontDialog1.Font ; } Figure 9-15 Font dialog box menu option
40
C# Programming: From Problem Analysis to Program Design40 CheckBox Objects Appear as small boxes –Allow users to make a yes/no or true/false selection Checked property set to either true or false depending on whether a check mark appears or not –Default false value CheckChanged( ) – default event-handler method –Fired when CheckBox object states change Can wire one event handler to multiple objects
41
C# Programming: From Problem Analysis to Program Design41 Wiring One Event Handler to Multiple Objects Using Properties window, click on the Events Icon Click the down arrow associated with that event Select method to handle the event Follow the same steps for other objects
42
C# Programming: From Problem Analysis to Program Design42 Wiring One Event Handler to Multiple Objects ( continued ) Figure 9-16 Wiring the event-handler method
43
C# Programming: From Problem Analysis to Program Design43 CheckBox Object Figure 9-17 ComputeCost_CheckedChanged( ) method raised
44
C# Programming: From Problem Analysis to Program Design44 GroupBox Objects CheckBox objects may be grouped together for visual appearance Can move or set properties that impact the entire group A GroupBox control should be placed on the form before you add objects GroupBox control adds functionality to RadioButton objects –Allow only one selection
45
C# Programming: From Problem Analysis to Program Design45 RadioButton Objects Appear as small circles Give users a choice between two or more options –Not appropriate to select more than one CheckBox object with RadioButton objects Group RadioButton objects by placing them on a Panel or GroupBox control –Setting the Text property for the GroupBox adds a labeled heading over the group
46
C# Programming: From Problem Analysis to Program Design46 RadioButton Objects ( continued ) Figure 9-18 GroupBox and RadioButton objects added
47
C# Programming: From Problem Analysis to Program Design47 RadioButton Objects ( continued ) Turn selection on this.radInterm.Checked = true; Raise a number of events, including Click( ) and CheckedChanged( ) events Wire the event-handler methods for RadioButton objects, just like CheckBox
48
C# Programming: From Problem Analysis to Program Design48 RadioButton Objects ( continued ) Register ComputeCost_CheckedChanged( ) method Figure 9-19 Wired Click event
49
C# Programming: From Problem Analysis to Program Design49 RadioButton Objects ( continued ) ComputeCost_CheckedChanged( ) method if (this.radBeginner.Checked) { cost +=10; this.lblMsg.Text = "Beginner “ + “-- Extra $10 charge"; } else // more statements
50
C# Programming: From Problem Analysis to Program Design50 ComputeCost_CheckChanged( ) and Click( ) Events Raised Figure 9-20 ComputeCost_CheckedChanged( ) and Click( ) events raised
51
C# Programming: From Problem Analysis to Program Design51 TabControl Controls Sometime an application requires too many controls for a single screen TabControl object displays multiple tabs, like dividers in a notebook Each separate tab can be clicked to display other options Add a TabControl object to the page by dragging the control from the Container section of the Toolbox
52
C# Programming: From Problem Analysis to Program Design52 TabControl Controls ( continued ) Figure 9-21 Tabbed controlled application
53
C# Programming: From Problem Analysis to Program Design53 TabControl Controls ( continued ) Figure 9-22 TabControl object stretched to fill form
54
C# Programming: From Problem Analysis to Program Design54 TabControl Controls ( continued ) TabPage property enables you to format individual tabs Clicking the ellipsis beside the Collection value displays the TabPage Collection Editor
55
C# Programming: From Problem Analysis to Program Design55 Chapter Summary Event-handling procedures –Registering an event ListBox control for multiple selections ComboBox versus ListBox objects
56
C# Programming: From Problem Analysis to Program Design56 Chapter Summary ( continued ) Adding controls to save space –MenuStrip controls –TabControl Use of GroupBox controls RadioButton versus CheckBox objects
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.