Download presentation
Presentation is loading. Please wait.
Published byAriel Parrish Modified over 9 years ago
2
Jozef Goetz contribution, 2012 1 2011-13 Pearson Education, Inc. All rights reserved. 2002 Prentice Hall. All rights reserved.
3
Jozef Goetz contribution, 2012 2 Outline. 14.1 Introduction 14.2 Windows Forms 14.3 Event-Handling Model 14.4 Control Properties and Layout 14.5 Label s, TextBox es and Button s 14.6 GroupBox es and Panel s 14.7 CheckBox es and RadioButton s 14.8 PictureBox es 14.9 ToolTip Component 14.10NumericUpDown Control 14.11 Mouse Event Handling 14.12Keyboard Event Handling Chapter 14 - Graphical User Interface Concepts: Part 1
4
Jozef Goetz contribution, 2012 3 …the wisest prophets make sure of the event first. Horace Walpole ...The user should feel in control of the computer; not the other way around. This is achieved in applications that embody three qualities: responsiveness, permissiveness, and consistency. Inside Macintosh, Volume 1 Apple Computer, Inc. 1985 All the better to see you with my dear. The Big Bad Wolf to Little Red Riding Hood
5
Jozef Goetz contribution, 2012 4 Chapter 14: Graphical User Interface Concepts: Part 1 Objectives To understand the design principles of graphical user interfaces GUI. To understand, use and create events. To be able to create GUIs. How to process events that are generated by user interactions with GUI controls. To understand the namespaces containing GUI components and event-handling classes and interfaces. To be able to create and manipulate buttons, labels, lists, textboxes, ToolTips, NumericUpDow and panels. To be able to use mouse and keyboard events.
6
Jozef Goetz contribution, 2012 ©1992-2011 by Pearson Education, Inc. All Rights Reserved.
7
Jozef Goetz contribution, 2012 6 14.1 Introduction Graphical User Interface ("Goo-ee") Pictorial interface to a program Distinctive "look" and "feel" Allow interaction with program visually Different applications with consistent GUIs improve productivity GUIs built from GUI components GUI Component: object with which user interacts (controls or widgets = window gadgets) User interacts with GUI component via mouse, keyboard, etc. Examples: Labels, Text fields, Buttons, Checkboxes
8
Jozef Goetz contribution, 2012 Figure 14.1 shows a Visual C# 2010 Edition window containing various GUI controls. 14.1 Introduction (Cont.)
9
Jozef Goetz contribution, 2012 8 Fig. 14.2 | Some basic GUI controls.
10
Jozef Goetz contribution, 2012 9 14.2 Windows Form
11
Jozef Goetz contribution, 2012 10 14.2 Windows Forms Windows Forms (WinForms) Create GUIs for programs The form is a graphical element that appears on the desktop
12
Jozef Goetz contribution, 2012 11 14.2 Windows Forms A form can be a dialog, a window, an MDI windows (Multiple Document Interface Window) The form acts as a container for components and controls: Component Class that implements IComponent interface no visual parts Control Component with a graphical part Such as button or label Are visible Event Generated by movement from mouse or keyboard Event handlers performs actions Specifics written by programmer
13
Jozef Goetz contribution, 2012 12 Fig. 14.3 | Components and controls for Windows Forms. Display all controls and components Categories that organize controls and components by functionality
14
Jozef Goetz contribution, 2012 13 14.2 Windows Forms Each.NET Framework class Form System.Windows.Forms.Form component control e.g. class Button: System.Windows.Forms.Button is in the System.Windows.Forms namespace System.Object System.Object System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.ControlSystem.MarshalByRefObjectSystem.ComponentModel.Component
15
Jozef Goetz contribution, 2012 14 14.2 Windows Forms The general design process for creating Windows applications requires creating: 1.a Windows Form and setting its properties 2.adding controls and setting its properties 3.implementing the event handlers may add some helper methods
16
2002 Prentice Hall. All rights reserved. Outline 15 SimpleEventExamp le.cs 1 // Fig. 12.7 ed1: SimpleEventExample.cs 2 // Using Visual Studio.NET to create event handlers. 3 4 using System; 5 using System.Drawing; 6 using System.Collections; 7 using System.ComponentModel; 8 using System.Windows.Forms; 9 using System.Data; 10 11 // program that shows a simple event handler 12 public class MyForm : System.Windows.Forms.Form 14 { 14 private System.ComponentModel.Container components = null; 15 16 // Visual Studio.NET generated code 17 18 [STAThread] 19 static void Main() 20 { 21 Application.Run( new MyForm() ); 22 } 23 24 // Visual Studio.NET creates an empty handler, 25 // we write definition: show message box when form clicked 26 private void MyForm_Click( object sender, System.EventArgs e ) 27 { 28 MessageBox.Show( "Form was pressed" ); 29 } 30 31 } // end class MyForm Create an event handler Signature of the event handler Reference to the object that raised the event (sender) Reference to an event arguments object (e) Class EventArgs is base class for objects with event information
17
Jozef Goetz contribution, 2012 16 14.3. Basic Event Handling Fig. Events section of the Properties window. controls have delegates for every event they can raise Current even handler (none) Selected event Event description List of events supported by control Events icon
18
Jozef Goetz contribution, 2012 17 14.3. Basic Event Handling Fig. List of Form events. Class name List of events
19
Jozef Goetz contribution, 2012 18 14.3 Event-Handling Model An event is a message sent by an object to signal the occurrence of an action. The action could be caused by user interaction, such as a mouse click, or it could be triggered by some other program logic. The object that raises (triggers) the event is called the event sender. The object that captures the event and responds to it is called the event receiver. In event communication, the event sender class does not know which object or method will receive (handle) the events it raises. What is needed is an intermediary (or pointer-like mechanism) between the source and the receiver. The.NET Framework defines a special type (Delegate) that provides the functionality of a function pointer.
20
Jozef Goetz contribution, 2012 19 14.3 Event-Handling Model GUIs are event driven they generate events when user interacts with GUI e.g., moving mouse, pressing button, typing in text field, etc. Event handlers Methods that process events and perform tasks. Each control that can generate events has an associated delegate
21
Jozef Goetz contribution, 2012 20 14.3 Event-Handling Model Sometimes useful to pass methods as arguments to other methods Delegates are sets of references to methods Delegate objects can be passed to methods; methods can then invoke the delegate objects refer to C# doesn’t allow passing of method references directly as arguments to other methods, but does provide delegates - classes that encapsulate sets of references to methods Delegate instance (object) can then be created to refer to a method(s) Once a delegate instance is created, the method it refers to can be invoked The delegate’s job is to invoke the appropriate method
22
Jozef Goetz contribution, 2012 21 14.3 Event-Handling Model Fig. Event-handling model using delegates. –delegates act as intermediaries between objects that generate events and methods that handle those events –once an event is raised, every method that the delegate references is called Associated delegate defines signature for control’s event handler contain lists of method references Must have same signature (i.e. the same list of parameters) The event handler is called whenever the event occurs Object A raises event EDelegate for event E Handler 1 for event E Handler 3 for event E Handler 2 for event E calls
23
Jozef Goetz contribution, 2012 22 14.3 Event-Handling Model Software Engineering Observations Delegates enable classes to specify methods that will not be named or implemented until the class is instantiated. This is extremely helpful in creating event handlers. For instance, the creator of the Form class does not need to name or define the method that will handle the Click event. Using delegates, the class can specify when such an event handler would be called. The programmers that create their own forms then can name and define this event handler As long as event handler has been registered (visually programmed) with the proper delegate, the method will be called at the proper time.
24
Jozef Goetz contribution, 2012 23 14.3.1 Basic Event Handling EventHandler Delegate - represents the method that will handle the event public delegate void EventHandler( object sender, EventArgs e ); The declaration of your event handler must have the same parameters as the EventHandler delegate declaration. sender –The source of the event. e –It refers to object e that holds the event data. This class must derive from the base class EventArgs.EventArgs Event handler Must have same signature as corresponding delegate Two object reference are passed in ControlName_EventName (object sender, EventArgs e) { event handling code } the programmer creates the event handler and registers it with the delegate Register event handlers: add event handlers (i.e. create a new delegate object and add) to the delegate’s invocation reference list objectName.EventName += new System.EventHandler ( MyEventHandler); //pass method as an argument e.g. this.Click += new System.EventHandler(this.MyForm_Click); //pass method the event handler MyForm_Click (this refers to an object of class MyForm.) MyForm has Click event defined as: public event EventHandler Click; where delegate EventHandler is associated with Click event. Since Click is EventHandler type, the right-hand site must assign to the delegate reference (delegate object reference)
25
Jozef Goetz contribution, 2012 24 14.3 Event-Handling Model Fig. Event-handling model using delegates. objectName.EventName += new System.EventHandler ( MyEventHandler); //pass method as an argument e.g. this.Click += new System.EventHandler(this.MyForm_Click); When you create an EventHandler delegate object (from EventHandler delegate class), you identify the method that will handle the event. Registration: To associate the event with your event handler, add an instance of the delegate (the right-hand side) to the event – left- hand side. we must create (visually programmed) a new delegate object for each event handler by writing new System.EventHandler ( MyEventHandler); Object A raises event EDelegate for event E Handler 1 for event E Handler 3 for event E Handler 2 for event E calls The event model in the.NET Framework is based on having an event delegate that connects an event with its handler. A delegate class that points to (takes) a method that provides the response to the event.
26
Jozef Goetz contribution, 2012 25 14.3 Event-Handling Model 1.The event sender calls the appropriate delegate when an event occurs. Eg. A Button calls its EventHandler delegate in response to a click. The delegate’s job is to invoke the appropriate method. 2.An event sender calls a delegate object like a method. Object A raises event EDelegate for event E Handler 1 for event E Handler 3 for event E Handler 2 for event E calls The event model in the.NET Framework is based on having an event delegate that connects an event with its handler. A delegate class that points to (takes) a method that provides the response to the event.
27
Jozef Goetz contribution, 2012 26 14.3 Event-Handling Model The following example shows an event delegate declaration. // AlarmEventHandler is the delegate for the Alarm event. // AlarmEventArgs is the class that holds event data for the alarm event. // It derives from the base class for event data, EventArgs. public delegate void AlarmEventHandler(object sender, AlarmEventArgs e); The syntax is similar to that of a method declaration; however, the delegate keyword informs the compiler that AlarmEventHandler is a delegate type. A delegate (in namespace System) is a class that can hold a reference to a static method. Unlike other classes, a delegate class has a signature, and when it is instantiated it can hold references only to methods that match its signature. A delegate is thus equivalent to a type-safe function pointer or a callback.
28
Jozef Goetz contribution, 2012 27 14.3.1 Basic Event Handling (Summary) Events are declared using delegates. MyForm has Click event defined as: public event EventHandler Click; where delegate EventHandler is associated with Click event modifier. controls have delegates for every event they can raise A delegate object encapsulates a method reference so that it can be called anonymously. When the event occurs, the delegate(s) given to it by its clients are invoked An event is a way for a class to allow clients to give it delegates to methods that should be called when the event occurs.
29
Jozef Goetz contribution, 2012 28 14.3.1 Basic Event Handling Event multicasting Have multiple handlers for one event Order called for event handlers is indeterminate Common Programming Error Assuming that multiple event handlers registered for the same event are called in a particular order can lead to logic errors. If the order is important, register the first event handler and have it call the others in order, passing the sender and event arguments.
30
Jozef Goetz contribution, 2012 29 Understanding Delegates A delegate is an important element of C# and is extensively used in every type of.NET application. A delegate is a class whose object (delegate object) can store a set of references to methods. This delegate object is used to invoke the methods. Many developers find delegates complicated. But believe me, it’s a simple concept to understand. In this article we would see how delegates work and in what situations they are used. We would start with a simple program that shows how to declare and use a delegate. class sample { delegate void del1( ) ; delegate void del2 ( int i ) ; public void fun( ) { del1 d1 = new del1 ( f1 ) ; d1( ) ; del2 d2 = new del2 ( f2 ) ; d2 ( 5 ) ; } public void f1( ) { Console.WriteLine ( "Reached in f1" ) ; } public void f2 ( int i ) { Console.WriteLine ( "Reached in f2" ) ; } In the sample class we have declared two delegates—del1 and del2. The statement delegate void del1( ) ; indicates that the delegate del1 is going to encapsulate methods, which takes no parameter and returns void. When this statement is encountered, a class del1 derived from a pre-defined class MultiCastDelegate gets created. Similarly, the statement delegate void del2 ( int i ) ; indicates that the delegate del2 will be used for methods taking one integer and returning a void. This statement would create another class del2 derived from the MultiCastDelegate class. The classes del1 and del2 are called ‘delegate classes’. To use the delegate class, like any other class, we have to declare its reference. We have declared the reference to delegate class del1 in the fun( ) method through the statement del1 d1 = new del1 ( f1 ) ; This would create a delegate object referenced by d1. To the constructor of the delegate class we have passed address of the method f1( ). C++ programmers may know it that mentioning a method name without parentheses represents its address. The delegate object would now hold an address of the method f1( ). Next, we have called the f1( ) method using the delegate object d1. This is achieved using the statement d1( ) ; If d1 is an object, how can we use it as if it is a method? Actually, the call d1( ) gets converted into a call to the d1.Invoke( ) method. The Invoke( ) method calls the f1( ) method using its address stored in delegate object. A delegate can contain references to multiple methods. In this case a single call to Invoke( ) calls all the methods. Similar to d1 we have instantiated another delegate object d2 and stored in it an address of the method f2( ). As the method f2( ) takes an integer as a parameter we pave passed 5 to d2( ). The value 5 would get passed to all the methods whose references are stored in this delegate object. This makes one thing obvious, signature of the delegate and that of the methods to be invoked using the delegate must be identical. If we create an object of sample class and call the fun( ) method both the f1( ) and f2( ) methods would get called through d1 and d2 respectively. Delegates make possible calling of methods using reference to methods the object oriented way. This avoids using any complex technique like pointers to functions.
31
Jozef Goetz contribution, 2012 30 Notation Software Engineering Observations Events for prepackaged.NET components usually have consistent naming schemes. If the event is named EventName, –then its delegate is EventNameEventHandler, and –the event arguments class is EventNameEventArgs. However, events that use class EventArgs use delegate EventHandler.
32
Jozef Goetz contribution, 2012 31 Outline SimpleEventEx ampleForm.cs
33
Jozef Goetz contribution, 2012 32 Fig. 14.6 | First half of the Visual Studio generated code file.
34
Jozef Goetz contribution, 2012 33 Fig. 14.7 | Second half of the Visual Studio generated code file. <= Registration
35
Jozef Goetz contribution, 2012 34 Fig. 14.8 | Viewing events for a Button control in the Properties window. Properties icon Events icon Selected events
36
Jozef Goetz contribution, 2012 35 Fig. 14.9 | List of Button events. Class name List of events Help => Index
37
Jozef Goetz contribution, 2012 36 Fig. 14.10 | Click event details. Event name Event type Event argument class Fig. 14.10Details of Click event where delegate EventHandler is associated with Click event
38
Jozef Goetz contribution, 2012 37 14.4 Control Properties and Layout Controls derive from class Control is in the System.Windows.Forms namespace System.Object System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.Control System.ComponentModel.Design.ByteViewer System.Windows.Forms.AxHost System.Windows.Forms.ButtonBase System.Windows.Forms.DataGrid System.Windows.Forms.DateTimePicker System.Windows.Forms.GroupBox System.Windows.Forms.Label System.Windows.Forms.ListControl System.Windows.Forms.ListView System.Windows.Forms.MonthCalendar System.Windows.Forms.PictureBox System.Windows.Forms.PrintPreviewControl System.Windows.Forms.ProgressBar System.Windows.Forms.ScrollableControl System.Windows.Forms.ScrollBar System.Windows.Forms.Splitter System.Windows.Forms.StatusBar System.Windows.Forms.TabControl System.Windows.Forms.TextBoxBase System.Windows.Forms.ToolBar System.Windows.Forms.TrackBar System.Windows.Forms.TreeView System.ObjectSystem.MarshalByRefObjectSystem.ComponentModel.ComponentSystem.ComponentModel.Design.ByteViewerSystem.Windows.Forms.AxHostSystem.Windows.Forms.ButtonBaseSystem.Windows.Forms.DataGridSystem.Windows.Forms.DateTimePickerSystem.Windows.Forms.GroupBoxSystem.Windows.Forms.LabelSystem.Windows.Forms.ListControlSystem.Windows.Forms.ListViewSystem.Windows.Forms.MonthCalendarSystem.Windows.Forms.PictureBoxSystem.Windows.Forms.PrintPreviewControlSystem.Windows.Forms.ProgressBarSystem.Windows.Forms.ScrollableControlSystem.Windows.Forms.ScrollBarSystem.Windows.Forms.SplitterSystem.Windows.Forms.StatusBarSystem.Windows.Forms.TabControlSystem.Windows.Forms.TextBoxBaseSystem.Windows.Forms.ToolBarSystem.Windows.Forms.TrackBarSystem.Windows.Forms.TreeView
39
Jozef Goetz contribution, 2012 38 14.4 Control Properties and Layout The Control class implements very basic functionality required by classes that display information to the user. 1.It handles user input through the keyboard and pointing devices. 2.It handles message routing and security. 3.It defines the bounds of a control (its position and size), although it does not implement painting. 4.It provides a window handle
40
Jozef Goetz contribution, 2012 39 14.4 Control Properties and Layout Common properties Text property –Specifies the text that appears on a control Focus method –Transfers the focus to a control –Becomes active control TabIndex property –Order in which controls are given focus –Automatically set by Visual Studio.NET but can be changed by the programmer Enable property –Indicate a control’s accessibility – where the control can be used ( = false – it is unavailable)
41
Jozef Goetz contribution, 2012 40 14.4 Control Properties and Layout Visibility property Hide control from user Or use method Hide Anchor property Specifying layout of controls within container Controls remain fixed distances from inside of container Anchoring allows control to stay a fixed from the sides of the container –Constant distance from specified location (e.g. Top, Left) even thought the form is resized Unanchored control moves relative to the position when the form is resized Docking allows control to spread itself along and entire side Both options refer to the parent container Size structure ( for the GUI layout) Allow for specifying size range which has properties Height and Width MinimumSize and MaximumSize property
42
Jozef Goetz contribution, 2012 41 14.4 Control Properties and Layout
43
Jozef Goetz contribution, 2012 42 14.4 Control Properties and Layout Fig. 14.13Anchoring demonstration. Constant distance to left and top sides Before resize After resize Unanchored control moves relative to the position when the form is resized
44
Jozef Goetz contribution, 2012 43 14.4 Control Properties and Layout Fig. 14.12Manipulating the Anchor property of a control. Darkened bar indicates to which wall control is anchored Click down-arrow in Anchor property to display anchoring window
45
Jozef Goetz contribution, 2012 44 14.4 Control Properties and Layout Fig. 14.14Docking demonstration. Control expands along top portion of the form
46
Jozef Goetz contribution, 2012 45 14.4 Control Properties and Layout
47
Jozef Goetz contribution, 2012 46 14.5 Labels, TextBoxes and Buttons Labels are defined with class Label and derived from class Control System.Object System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.Control System.ComponentModel.Design.ByteViewer System.Windows.Forms.AxHost System.Windows.Forms.ButtonBase System.Windows.Forms.DataGrid System.Windows.Forms.DateTimePicker System.Windows.Forms.GroupBox System.Windows.Forms.Label System.Windows.Forms.ListControl System.Windows.Forms.ListView System.Windows.Forms.MonthCalendar System.Windows.Forms.PictureBox System.Windows.Forms.PrintPreviewControl System.Windows.Forms.ProgressBar System.Windows.Forms.ScrollableControl System.Windows.Forms.ScrollBar System.Windows.Forms.Splitter System.Windows.Forms.StatusBar System.Windows.Forms.TabControl System.Windows.Forms.TextBoxBase System.Windows.Forms.ToolBar System.Windows.Forms.TrackBar System.Windows.Forms.TreeView System.ObjectSystem.MarshalByRefObjectSystem.ComponentModel.ComponentSystem.ComponentModel.Design.ByteViewerSystem.Windows.Forms.AxHostSystem.Windows.Forms.ButtonBaseSystem.Windows.Forms.DataGridSystem.Windows.Forms.DateTimePickerSystem.Windows.Forms.GroupBoxSystem.Windows.Forms.ListControlSystem.Windows.Forms.ListViewSystem.Windows.Forms.MonthCalendarSystem.Windows.Forms.PictureBoxSystem.Windows.Forms.PrintPreviewControlSystem.Windows.Forms.ProgressBarSystem.Windows.Forms.ScrollableControlSystem.Windows.Forms.ScrollBarSystem.Windows.Forms.SplitterSystem.Windows.Forms.StatusBarSystem.Windows.Forms.TabControlSystem.Windows.Forms.TextBoxBaseSystem.Windows.Forms.ToolBarSystem.Windows.Forms.TrackBarSystem.Windows.Forms.TreeView Provide text instruction Read only text
48
Jozef Goetz contribution, 2012 47 14.5 Labels, TextBoxes and Buttons Textbox where text can be either input by the user from the keyboard or displayed Class TextBox System.Object System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.Control System.Windows.Forms.TextBoxBase System.Windows.Forms.RichTextBox System.Windows.Forms.TextBox System.ObjectSystem.MarshalByRefObjectSystem.ComponentModel.ComponentSystem.Windows.Forms.ControlSystem.Windows.Forms.RichTextBoxSystem.Windows.Forms.TextBox Area for text input Password textbox Button Control to trigger a specific action Checkboxes or radio buttons Derived from System.Windows.Forms.ButtonBaseSystem.Windows.Forms.ButtonBase
49
Jozef Goetz contribution, 2012 48 14.5 Labels TextBoxes and Buttons
50
Jozef Goetz contribution, 2012 49 14.5 Labels TextBoxes and Buttons
51
Jozef Goetz contribution, 2012 50 14.5 Labels TextBoxes and Buttons
52
2002 Prentice Hall. All rights reserved. Outline 51 LabelTextBoxButt onTest.cs 1 // Fig. 14.20: LabelTextBoxButtonTest.cs 2 // Using a Textbox, Label and Button to display 3 // the hidden text in a password box. 4 5 using System; 6 using System.Drawing; 7 using System.Collections; 8 using System.ComponentModel; 9 using System.Windows.Forms; 10 using System.Data; 11 12 // namespace contains our form to display hidden text 14 namespace LabelTextBoxButtonTest 14 { 15 /// 16 /// form that creates a password textbox and 17 /// a label to display textbox contents 18 /// 19 public class LabelTextBoxButtonTest : 20 System.Windows.Forms.Form 21 { 22 private System.Windows.Forms.Button displayPasswordButton; 23 private System.Windows.Forms.Label displayPasswordLabel; 24 private System.Windows.Forms.TextBox inputPasswordTextBox; 25 26 /// 27 /// Required designer variable. 28 /// 29 private System.ComponentModel.Container components = null; 30 //Containers are objects that encapsulate and track components 31 // default contructor 32 public LabelTextBoxButtonTest() 33 { 34 InitializeComponent(); 35 } Visual Studio.NET adds comments to our code Visual Studio.NET inserts declarations for the control we added to the form The IDE manages these declarationDeclare reference components (an array)- to hold components Reference is nullConstructor for the form is created for usMethod InitializeComponent creates components and controls in the form and sets their properties
53
2002 Prentice Hall. All rights reserved. Outline 52 LabelTextBoxButt onTest.cs 36 37 /// 38 /// Clean up any resources being used. 39 /// 40 protected override void Dispose( bool disposing ) 41 { 42 if ( disposing ) 43 { 44 if ( components != null ) 45 { 46 components.Dispose(); //Releases all resources used by the Container. 47 } 48 } 49 50 base.Dispose( disposing ); 51 } 52 53 #region Windows Form Designer generated code 54 /// 55 /// Required method for Designer support - do not modify 56 /// the contents of this method with the code editor. 57 /// 58 private void InitializeComponent() 59 { 60 this.displayPasswordButton = 61 new System.Windows.Forms.Button(); 62 this.inputPasswordTextBox = 63 new System.Windows.Forms.TextBox(); 64 this.displayPasswordLabel = 65 new System.Windows.Forms.Label(); 66 this.SuspendLayout(); 67 Method Dispose cleans up allocated resources #region preprocessor directives allow collapsible code in Visual Studio.NET Create new objects for the control we added
54
2002 Prentice Hall. All rights reserved. Outline 53 LabelTextBoxButt onTest.cs 68 // 69 // displayPasswordButton 70 // 71 this.displayPasswordButton.Location = 72 new System.Drawing.Point( 96, 96 ); 73 this.displayPasswordButton.Name = 74 "displayPasswordButton"; 75 this.displayPasswordButton.TabIndex = 1; 76 this.displayPasswordButton.Text = "Show Me"; 77 this.displayPasswordButton.Click += 78 new System.EventHandler( 79 this.displayPasswordButton_Click ); 80 81 // 82 // inputPasswordTextBox 83 // 84 this.inputPasswordTextBox.Location = 85 new System.Drawing.Point( 16, 16 ); 86 this.inputPasswordTextBox.Name = 87 "inputPasswordTextBox"; 88 this.inputPasswordTextBox.PasswordChar = '*'; 89 this.inputPasswordTextBox.Size = 90 new System.Drawing.Size( 264, 20 ); 91 this.inputPasswordTextBox.TabIndex = 0; 92 this.inputPasswordTextBox.Text = ""; 93 94 // 95 // displayPasswordLabel 96 // 97 this.displayPasswordLabel.BorderStyle = 98 System.Windows.Forms.BorderStyle.Fixed3D; 99 this.displayPasswordLabel.Location = 100 new System.Drawing.Point( 16, 48 ); 101 this.displayPasswordLabel.Name = 102 "displayPasswordLabel"; Set the Name, PasswordChar and Text properties for inputPasswordTextBox Visual Studio.NET register the event handler for us
55
2002 Prentice Hall. All rights reserved. Outline 54 LabelTextBoxButt onTest.cs 103 this.displayPasswordLabel.Size = 104 new System.Drawing.Size( 264, 23 ); 105 this.displayPasswordLabel.TabIndex = 2; 106 107 // 108 // LabelTextBoxButtonTest 109 // 110 this.AutoScaleBaseSize = 111 new System.Drawing.Size( 5, 13 ); 112 this.ClientSize = 113 new System.Drawing.Size( 292, 133 ); 114 this.Controls.AddRange( 115 new System.Windows.Forms.Control[] { 116 this.displayPasswordLabel, 117 this.inputPasswordTextBox, 118 this.displayPasswordButton}); 119 this.Name = "LabelTextBoxButtonTest"; 120 this.Text = "LabelTextBoxButtonTest"; 121 this.ResumeLayout( false ); 122 123 } // end method InitializeComponent 124 125 // end collapsible region started on line 53 126 #endregion 127 128 /// 129 /// The main entry point for the application. 130 /// 131 [STAThread] 132 static void Main() 133 { 134 Application.Run( new LabelTextBoxButtonTest() ); 135 } 136 #endregion signal the end of the collapsible region
56
2002 Prentice Hall. All rights reserved. Outline 55 LabelTextBoxButt onTest.cs Program Output 137 // display user input on label 138 protected void displayPasswordButton_Click( 139 object sender, System.EventArgs e ) 140 { 141 // text has not changed 142 displayPasswordLabel.Text = 143 inputPasswordTextBox.Text; 144 } 145 146 } // end class LabelTextBoxButtonTest 147 148 } // end namespace LabelTextBoxButtonTest Create an empty event handler named displayPasswordButton_Click To show the text, set displayPasswordLabel’s Text to inputPasswordTextBox’s Text User must program this line manually
57
Jozef Goetz contribution, 2012 56 Outline LabelTextBoxButtonTestForm.cs
58
Jozef Goetz contribution, 2012 57 14.6 GroupBoxes and Panels divides controls into functional "groups" that can be arranged easily. Arrange controls on a GUI Groupboxes Can display captions Do not include scrollbars Panels Cannot display captions Include scrollbars
59
Jozef Goetz contribution, 2012 58 14.6 GroupBoxes and Panels Fig. 14.21GroupBox properties. Fig. 14.22Panel properties.
60
Jozef Goetz contribution, 2012 59 14.6 GroupBox es and Panel s Fig. 14.23Creating a Panel with scrollbars. Controls inside panel panel panel scrollbars after resized but first drop a panel then place buttons inside ! Do the same for GroupBoxes. Put the property of panel AutoScroll = true
61
Jozef Goetz contribution, 2012 60 14.6 GroupBoxes and Panels Arrange components on a GUI GroupBoxes can display a caption Text property determines its caption have thin borders by default Panels can have scrollbars View additional controls inside the Panel can be set to have borders by changing their BorderStyle property Panels and GroupBoxes can contain other Panels and GroupBoxes. Organize the GUI by anchoring and docking controls (of similar function) inside a GroupBox or Panel. The GroupBox or Panel then can be anchored or docked inside a form. This divides controls into functional "groups" that can be arranged easily.
62
Jozef Goetz contribution, 2012 61 14.6 GroupBoxes and Panels Forms, GroupBoxes, and Panels can act as logical groups for radio buttons. The radio buttons within each group will be mutually exclusive to each other, but not to radio buttons in different groups.
63
2002 Prentice Hall. All rights reserved. Outline 62 GroupBoxPanelExa mple.cs 1 // Fig. 14.24: GroupBoxPanelExample.cs 2 // Using GroupBoxes and Panels to hold buttons. 3 4 using System; 5 using System.Drawing; 6 using System.Collections; 7 using System.ComponentModel; 8 using System.Windows.Forms; 9 using System.Data; 10 11 /// form to display a groupbox versus a panel 12 public class GroupBoxPanelExample : System.Windows.Forms.Form 13 { 14 private System.Windows.Forms.Button hiButton; 15 private System.Windows.Forms.Button byeButton; 16 private System.Windows.Forms.Button leftButton; 17 private System.Windows.Forms.Button rightButton; 18 19 private System.Windows.Forms.GroupBox mainGroupBox; 20 private System.Windows.Forms.Label messageLabel; 21 private System.Windows.Forms.Panel mainPanel; 22 23 private System.ComponentModel.Container components = null; 24 25 // Visual Studio.NET-generated Dispose method 26 27 [STAThread] 28 static void Main() 29 { 30 Application.Run( new GroupBoxPanelExample() ); 31 } 32 messageLabel is initially blankGroupBox (name mainGroupBox)Panel (name mainPanel)Control AutoScroll property set to TRUE
64
2002 Prentice Hall. All rights reserved. Outline 63 GroupBoxPanelExa mple.cs 33 // event handlers to change messageLabel 34 35 // event handler for hi button 36 private void hiButton_Click( 37 object sender, System.EventArgs e ) 38 { 39 messageLabel.Text= "Hi pressed"; 40 } 41 42 // event handler for bye button 43 private void byeButton_Click( 44 object sender, System.EventArgs e ) 45 { 46 messageLabel.Text = "Bye pressed"; 47 } 48 49 // event handler for far left button 50 private void leftButton_Click( 51 object sender, System.EventArgs e ) 52 { 53 messageLabel.Text = "Far left pressed"; 54 } 55 56 // event handler for far right button 57 private void rightButton_Click( 58 object sender, System.EventArgs e ) 59 { 60 messageLabel.Text = "Far right pressed"; 61 } 62 63 } // end class GroupBoxPanelExample Represent event handlers hiButton and byeButton belong to GroupBox Panel has two buttons, leftButton and rightButton Line messageLabel added to customize the text
65
2002 Prentice Hall. All rights reserved. Outline 64 GroupBoxPanelExa mple.cs Program Output hiButton_Click leftButton_ClickrightButton_Click
66
Jozef Goetz contribution, 2012 65 14.7 CheckBoxes and RadioButtons State Buttons CheckBoxes Any check box can be checked at a time RadioButtons Usually organized in groups and only one checked at a time
67
Jozef Goetz contribution, 2012 66 14.7 Checkboxes and RadioButtons System.Object System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.Control System.Windows.Forms.ButtonBase System.Windows.Forms.Button System.Windows.Forms.CheckBox System.Windows.Forms.RadioButton System.ObjectSystem.MarshalByRefObjectSystem.ComponentModel.ComponentSystem.Windows.Forms.ControlSystem.Windows.Forms.ButtonSystem.Windows.Forms.CheckBoxSystem.Windows.Forms.RadioButton Derived from class ButtonBase CheckBox –public class CheckBox : ButtonBase –gives the user an option, such as on/off or true/false state –If grouped together Only one can be true Mutually exclusive options –The check box control can display an image or text or both. No restriction on usage RadioButton –public abstract class ButtonBase : Control –public class RadioButton : ButtonBase –All RadioButton controls in a given container, such as a Form, constitute a group.Form – To create multiple groups on one form, place each additional group in its own container, such as a GroupBox or Panel controlGroupBoxPanel –two states: selected/deselected –If grouped together Only one can be selected Mutually exclusive options
68
Jozef Goetz contribution, 2012 67 14.7 CheckBox es
69
2002 Prentice Hall. All rights reserved. Outline 68 CheckBoxTest.cs 1 // Fig. 14.26: CheckBoxTest.cs 2 // Using CheckBoxes to toggle italic and bold styles. 3 4 using System; 5 using System.Drawing; 6 using System.Collections; 7 using System.ComponentModel; 8 using System.Windows.Forms; 9 using System.Data; 10 11 /// form contains checkboxes to allow 12 /// the user to modify sample text 13 public class CheckBoxTest : System.Windows.Forms.Form 14 { 15 private System.Windows.Forms.CheckBox boldCheckBox; 16 private System.Windows.Forms.CheckBox italicCheckBox; 17 18 private System.Windows.Forms.Label outputLabel; 19 20 private System.ComponentModel.Container components = null; 21 22 // Visual Studio.NET-generated Dispose method 23 24 /// The main entry point for the application. 25 [STAThread] 26 static void Main() 27 { 28 Application.Run( new CheckBoxTest() ); 29 } 30 When program start, both Checkbox is unchecked Text property set to BoldText property set to ItalicThe Label OutputLabel is labeled Watch the font style change
70
2002 Prentice Hall. All rights reserved. Outline 69 CheckBoxTest.cs 31 // make text bold if not bold, 32 // if already bold make not bold 33 private void boldCheckBox_CheckedChanged( 34 object sender, System.EventArgs e ) 35 { 36 outputLabel.Font = 37 new Font( outputLabel.Font.Name, 38 outputLabel.Font.Size, 39 outputLabel.Font.Style ^ FontStyle.Bold ); 40 } 41 42 // make text italic if not italic, 43 // if already italic make not italic 44 private void italicCheckBox_CheckedChanged( 45 object sender, System.EventArgs e ) 46 { 47 outputLabel.Font = 48 new Font( outputLabel.Font.Name, 49 outputLabel.Font.Size, 50 outputLabel.Font.Style ^ FontStyle.Italic ); 51 } 52 53 } // end class CheckBoxTest Font constructor takes in the font name, size, and style Style is a member of the FontStyle enumeration Style property itself is read-only Font object’s Style property is set when object is created Style can use bitwise operators Font.Style: Bold is represented by bits 01 Italic is represented by bits 10 ^ = XOR operator => = 1 if and only if one of the bits is 1 By using XOR operator greatly reduces the amount of code required to check all possible 16 font combinations.
71
2002 Prentice Hall. All rights reserved. Outline 70 CheckBoxTest.cs Program Output Result when bold is selectedResult when both styles are selected
72
Jozef Goetz contribution, 2012 71 14.7 RadioButton s
73
Jozef Goetz contribution, 2012 72 MessageBoxIcon public enum MessageBoxIcon This enumeration is used by the MessageBox class:MessageBox System.Object System.Windows.Forms.MessageBoxSystem.Object Asterisk: The message box contains a symbol consisting of a lowercase letter i in a circle. Error: The message box contains a symbol consisting of white X in a circle with a red background. Exclamation: The message box contains a symbol consisting of an exclamation point in a triangle with a yellow background. Hand: The message box contains a symbol consisting of a white X in a circle with a red background. Information: The message box contains a symbol consisting of a lowercase letter i in a circle. None: The message box contain no symbols. Question: The message box contains a symbol consisting of a question mark in a circle. Stop: The message box contains a symbol consisting of white X in a circle with a red background. Warning: The message box contains a symbol consisting of an exclamation-point in a triangle with a yellow background.
74
Jozef Goetz contribution, 2012 73 MessageBoxButtons public enum MessageBoxButtons (see in Object Browser) This enumeration is used by MessageBox.MessageBox AbortRetryIgnore: The message box contains Abort, Retry, and Ignore buttons. OK: The message box contains an OK button. OKCancel: The message box contains OK and Cancel buttons. RetryCancel: The message box contains Retry and Cancel buttons. YesNo: The message box contains Yes and No buttons. YesNoCancel: The message box contains Yes, No, and Cancel buttons.
75
2002 Prentice Hall. All rights reserved. Outline 74 RadioButtonsTest.cs 1 // Fig. 14.28: RadioButtonsTest.cs 2 // Using RadioButtons to set message window options. 3 4 using System; 5 using System.Drawing; 6 using System.Collections; 7 using System.ComponentModel; 8 using System.Windows.Forms; 9 using System.Data; 10 11 /// form contains several radio buttons--user chooses one 12 /// from each group to create a custom MessageBox 13 public class RadioButtonsTest : System.Windows.Forms.Form 14 { 15 private System.Windows.Forms.Label promptLabel; 16 private System.Windows.Forms.Label displayLabel; 17 private System.Windows.Forms.Button displayButton; 18 19 private System.Windows.Forms.RadioButton questionButton; 20 private System.Windows.Forms.RadioButton informationButton; 21 private System.Windows.Forms.RadioButton exclamationButton; 22 private System.Windows.Forms.RadioButton errorButton; 23 private System.Windows.Forms.RadioButton retryCancelButton; 24 private System.Windows.Forms.RadioButton yesNoButton; 25 private System.Windows.Forms.RadioButton yesNoCancelButton; 26 private System.Windows.Forms.RadioButton okCancelButton; 27 private System.Windows.Forms.RadioButton okButton; 28 private System.Windows.Forms.RadioButton 29 abortRetryIgnoreButton; 30 31 private System.Windows.Forms.GroupBox groupBox2; 32 private System.Windows.Forms.GroupBox groupBox1; 33 34 private MessageBoxIcon iconType = MessageBoxIcon.Error; To store user’s choice of options iconType is created. Object iconType is a MessageBoxIcon enumeration The enumeration name indicate which button to display Label is used to display which button was pressed Display the text DisplayRadioButtons are created for the enumeration options One event handling exists for all the radio buttons in groupBox1 and groupBox2
76
2002 Prentice Hall. All rights reserved. Outline 75 RadioButtonsTest.cs 35 private MessageBoxButtons buttonType = 36 MessageBoxButtons.OK; 37 38 /// The main entry point for the application. 39 [STAThread] 40 static void Main() 41 { 42 Application.Run( new RadioButtonsTest() ); 43 } 44 45 // change button based on option chosen by sender 46 private void buttonType_CheckedChanged( 47 object sender, System.EventArgs e ) 48 { 49 if ( sender == okButton ) // display OK button 50 buttonType = MessageBoxButtons.OK; 51 52 // display OK and Cancel buttons 53 else if ( sender == okCancelButton ) 54 buttonType = MessageBoxButtons.OKCancel; 55 56 // display Abort, Retry and Ignore buttons 57 else if ( sender == abortRetryIgnoreButton ) 58 buttonType = MessageBoxButtons.AbortRetryIgnore; 59 60 // display Yes, No and Cancel buttons 61 else if ( sender == yesNoCancelButton ) 62 buttonType = MessageBoxButtons.YesNoCancel; 63 64 // display Yes and No buttons 65 else if ( sender == yesNoButton ) 66 buttonType = MessageBoxButtons.YesNo; 67 68 // only one option left--display 69 // Retry and Cancel buttons To store user’s choice of options buttonType is created Object buttonType is a MessageBoxButtom enumeration The enumeration name indicate which button to display Each radio button generates a CheckedChanged when clicked Handlers compare the sender object with every radio button to determine which button was selected
77
2002 Prentice Hall. All rights reserved. Outline 76 RadioButtonsTest.cs 70 else 71 buttonType = MessageBoxButtons.RetryCancel; 72 73 } // end method buttonType_CheckedChanged 74 75 // change icon based on option chosen by sender 76 private void iconType_CheckedChanged( 77 object sender, System.EventArgs e ) 78 { 79 if ( sender == errorButton ) // display error icon 80 iconType = MessageBoxIcon.Error; 81 82 // display exclamation point 83 else if ( sender == exclamationButton ) 84 iconType = MessageBoxIcon.Exclamation; 85 86 // display information icon 87 else if ( sender == informationButton ) 88 iconType = MessageBoxIcon.Information; 89 90 else // only one option left--display question mark 91 iconType = MessageBoxIcon.Question; 92 93 } // end method iconType_CheckedChanged 94 95 // display MessageBox and button user pressed 96 protected void displayButton_Click( 97 object sender, System.EventArgs e ) 98 { 99 DialogResult result = 100 MessageBox.Show( "This is Your Custom MessageBox.", 101 "Custom MessageBox", buttonType, iconType, 0, 0 ); 102 103 // check for dialog result and display it in label 104 switch ( result ) Handlers compare the sender object with every radio button to determine which button was selected Click handler for displayButton creates a MessageBox Result of message box is a DialogResult enumeration
78
2002 Prentice Hall. All rights reserved. Outline 77 RadioButtonsTest.cs 105 { 106 case DialogResult.OK: 107 displayLabel.Text = "OK was pressed."; 108 break; 109 110 case DialogResult.Cancel: 111 displayLabel.Text = "Cancel was pressed."; 112 break; 113 114 case DialogResult.Abort: 115 displayLabel.Text = "Abort was pressed."; 116 break; 117 118 case DialogResult.Retry: 119 displayLabel.Text = "Retry was pressed."; 120 break; 121 122 case DialogResult.Ignore: 123 displayLabel.Text = "Ignore was pressed."; 124 break; 125 126 case DialogResult.Yes: 127 displayLabel.Text = "Yes was pressed."; 128 break; 129 130 case DialogResult.No: 131 displayLabel.Text = "No was pressed."; 132 break; 133 134 } // end switch 135 136 } // end method displayButton_Click 137 138 } // end class RadioButtonsTest The result input will help determine which text to display among the cases
79
2002 Prentice Hall. All rights reserved. Outline 78 RadioButtonsTest.cs Program Output Exclamation icon type Error icon type OKCancel button type OK button type Radio button style allow user to select one per column
80
2002 Prentice Hall. All rights reserved. Outline 79 RadioButtonsTest.cs Program Output AbortRetryIgnore button type RetryCancel button type Information icon type Question icon type YesNoCancel button type YesNo button type
81
Jozef Goetz contribution, 2012 80 14.8 PictureBoxes PictureBoxes Display images Bitmap GIF (Graphics Interchange Format) JPEG (Joint Photographic Expert Group) Metafile Image property Image to be displayed
82
Jozef Goetz contribution, 2012 81 14.8 PictureBoxes System.Object System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.Control System.ComponentModel.Design.ByteViewer System.Windows.Forms.AxHost System.Windows.Forms.ButtonBase System.Windows.Forms.DataGrid System.Windows.Forms.DateTimePicker System.Windows.Forms.GroupBox System.Windows.Forms.Label System.Windows.Forms.ListControl System.Windows.Forms.ListView System.Windows.Forms.MonthCalendar System.Windows.Forms.PictureBox System.ObjectSystem.MarshalByRefObjectSystem.ComponentModel.ComponentSystem.ComponentModel.Design.ByteViewerSystem.Windows.Forms.AxHostSystem.Windows.Forms.ButtonBaseSystem.Windows.Forms.DataGridSystem.Windows.Forms.DateTimePickerSystem.Windows.Forms.GroupBoxSystem.Windows.Forms.LabelSystem.Windows.Forms.ListControlSystem.Windows.Forms.ListViewSystem.Windows.Forms.MonthCalendar Class PictureBox Displays an image Image set by object of class Image. –The Image property sets the Image object to use –SizeMode property sets how the image is displayed
83
Jozef Goetz contribution, 2012 82 14.8 PictureBox es
84
2002 Prentice Hall. All rights reserved. Outline 83 PictureBoxTest.c s 1 // Fig. 13.30 ed1: PictureBoxTest.cs 2 // Using a PictureBox to display images. 3 4 using System; 5 using System.Drawing; 6 using System.Collections; 7 using System.ComponentModel; 8 using System.Windows.Forms; 9 using System.Data; 10 using System.IO; 11 12 /// form to display different images when clicked 13 public class PictureBoxTest : System.Windows.Forms.Form 14 { 15 private System.Windows.Forms.PictureBox imagePictureBox; 16 private System.Windows.Forms.Label promptLabel; 17 18 private int imageNum = -1; 19 20 /// The main entry point for the application. 21 [STAThread] 22 static void Main() 23 { 24 Application.Run( new PictureBoxTest() ); 25 } 26 27 // change image whenever PictureBox clicked 28 private void imagePictureBox_Click( 29 object sender, System.EventArgs e ) 30 { 31 imageNum = ( imageNum + 1 ) % 3; // imageNum from 0 to 2 32 PictureBox imagePicture use to display one of three bitmap images Includes instructions Click On Picture Box to View Images To respond to the Click eventStore the image we want to displayModulus calculation insures that number is between 0 and 2
85
2002 Prentice Hall. All rights reserved. Outline 84 PictureBoxTest.c s Program Output 33 // create Image object from file, display on PictureBox 34 imagePictureBox.Image = Image.FromFile( 35 Directory.GetCurrentDirectory() + "\\images\\image" + 36 imageNum + ".bmp" ); 37 } 38 39 } // end class PictureBoxTest Set the Image property of imagePictureBox to an Image Method FromFile which takes a string and creates an Image object Method GetCurrentDirectory of Class Directory returns current directory of file as a string Use imageNum to append the correct number
86
Jozef Goetz contribution, 2012 85 Outline PictureBoxTestForm.cs
87
Jozef Goetz contribution, 2012 86 Class System.Windows.Forms.Control For a list of all members of this type, see Control Members.Control Members System.Object System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.Control System.ComponentModel.Design.ByteViewer System.Windows.Forms.AxHost System.Windows.Forms.ButtonBase System.Windows.Forms.DataGrid System.Windows.Forms.DateTimePicker System.Windows.Forms.GroupBox System.Windows.Forms.Label System.Windows.Forms.ListControl System.Windows.Forms.ListView System.Windows.Forms.MonthCalendar System.Windows.Forms.PictureBox System.Windows.Forms.PrintPreviewControl System.Windows.Forms.ProgressBar System.Windows.Forms.ScrollableControl System.Windows.Forms.ScrollBar System.Windows.Forms.Splitter System.Windows.Forms.StatusBar System.Windows.Forms.TabControl System.Windows.Forms.TextBoxBase System.Windows.Forms.ToolBar System.Windows.Forms.TrackBar System.Windows.Forms.TreeView System.ObjectSystem.MarshalByRefObjectSystem.ComponentModel.ComponentSystem.ComponentModel.Design.ByteViewerSystem.Windows.Forms.AxHostSystem.Windows.Forms.ButtonBaseSystem.Windows.Forms.DataGridSystem.Windows.Forms.DateTimePickerSystem.Windows.Forms.GroupBoxSystem.Windows.Forms.LabelSystem.Windows.Forms.ListControlSystem.Windows.Forms.ListViewSystem.Windows.Forms.MonthCalendarSystem.Windows.Forms.PictureBoxSystem.Windows.Forms.PrintPreviewControlSystem.Windows.Forms.ProgressBarSystem.Windows.Forms.ScrollableControlSystem.Windows.Forms.ScrollBarSystem.Windows.Forms.SplitterSystem.Windows.Forms.StatusBarSystem.Windows.Forms.TabControlSystem.Windows.Forms.TextBoxBaseSystem.Windows.Forms.ToolBarSystem.Windows.Forms.TrackBarSystem.Windows.Forms.TreeView
88
Jozef Goetz contribution, 2012 87 14.9 ToolTip Component The helpful text that appears when the mouse hovers over an item in a GUI. When you add a ToolTip component from the Toolbox, it appears in the component tray.
89
Jozef Goetz contribution, 2012 88 Fig. 14.31 | ToolTip properties and events.
90
Jozef Goetz contribution, 2012 89 Outline ToolTipEx ampleForm.cs (a) (b)
91
Jozef Goetz contribution, 2012 90 Fig. 14.33 | Demonstrating the component tray. ToolTip in component tray When you add a ToolTip component from the Toolbox, it appears in the component tray. Once a ToolTip is added to a Form, a new property appears in the Properties window for each other controls on the Form
92
Jozef Goetz contribution, 2012 91 Fig. 14.34 | Setting a control’s tool tip text. Property to set tool tip text Tool tip text Once a ToolTip is added to a Form, a new property appears in the Properties window for each other controls on the Form
93
Jozef Goetz contribution, 2012 92 14.10NumericUpDown Control Restrict the user’s input choices to a specific range of numeric values (Minimum, Maximum). This control appears as a TextBox with 2 small Buttons on the right side – one with up arrow, and one with a down arrow
94
Jozef Goetz contribution, 2012 93 Fig. 14.35 | NumericUpDown properties and event.
95
Jozef Goetz contribution, 2012 94 Outline interestCalculator Form.cs (1 of 2)
96
Jozef Goetz contribution, 2012 95 Outline interestCal culatorFor m.cs (2 of 2) Click to increase number of years Click to decrease number of years NumericalUpDown control
97
Jozef Goetz contribution, 2012 96 Outline interestCal culatorFor m.cs (2 of 2) Click to increase number of years Click to decrease number of years // Fig. 14.36: interestCalculatorForm.cs // Demonstrating the NumericUpDown control. // better instructor's solution, difference in red using System; using System.Windows.Forms; public partial class interestCalculatorForm : Form { // default constructor public interestCalculatorForm() { InitializeComponent(); } // end constructor private void calculateButton_Click( object sender, EventArgs e ) { // declare variables to store user input decimal principal; // store principal double rate; // store interest rate int year; // store number of years decimal amount; // store amount string output; // store output // retrieve user input principal = Convert.ToDecimal( principalTextBox.Text ); rate = Convert.ToDouble( interestTextBox.Text ); year = Convert.ToInt32( yearUpDown.Value ); amount = principal; //initial value // set output header output = "Year\tAmount on Deposit\r\n"; // calculate amount after each year and append to output for ( int yearCounter = 1; yearCounter <= year; yearCounter++ ) { amount = amount * (1 + (decimal)rate / 100); //amount = principal * // ( ( decimal ) Math.Pow( ( 1 + rate / 100 ), yearCounter ) ); output += ( yearCounter + "\t" + String.Format( "{0:C}", amount ) + "\r\n" ); } // end for displayTextBox.Text = output; // display result } // end method calculateButton_Click } // end class interestCalculatorForm
98
Jozef Goetz contribution, 2012 97 14.11 Mouse Event Handling Mouse Events uses (Delegate EventHandler, event arguments EventArgs) The MouseEnter or MouseLeave events use delegate EventHandler and event arguments EventArgs Mouse Events uses (Delegate MouseEventHandler, event arguments MouseEventArgs) Passing mouse event Mouse event-handling methods take an object and MouseEventArgs object as argument Class MouseEventArgs Contains properties Coordinates of the mouse pointer The mouse pressed # of clicks Number of notches the wheel turned X-coordinate of event, within the control Y-coordinate of event, within the control
99
Jozef Goetz contribution, 2012 98 14.11 Mouse Event Handling
100
2002 Prentice Hall. All rights reserved. Outline 99 Painter.cs 1 // Fig 14.38: Painter.cs 2 // Using the mouse to draw on a form. 3 // draw circle whenever mouse button moves 4 using System; 5 using System.Drawing; 6 using System.Collections; 7 using System.ComponentModel; 8 using System.Windows.Forms; 9 using System.Data; 10 11 /// creates a form as a drawing surface 12 public class Painter : System.Windows.Forms.Form 13 { 14 bool shouldPaint = false; // whether to paint 15 16 /// The main entry point for the application. 17 [STAThread] 18 static void Main() 19 { 20 Application.Run( new Painter() ); 21 } 22 // in design mode go to Form’s Event and double on MouseDown event 23 // should paint after mouse button has been pressed 24 private void Painter_MouseDown( 25 object sender, System.Windows.Forms.MouseEventArgs e ) 26 { 27 shouldPaint = true; 28 } 29 30 // stop painting when mouse button released 31 private void Painter_MouseUp( 32 object sender, System.Windows.Forms.MouseEventArgs e ) 33 { 34 shouldPaint = false; 35 } Creates variable shouldPaint to determine whether to draw on the form The event handler for event MouseDown shouldPaint is set to true when this event occurs Mouse cursor will draw The event handler of event MouseUp shouldPaint set to false, mouse cursor will not draw
101
2002 Prentice Hall. All rights reserved. Outline 100 Painter.cs Program Output 36 37 // draw circle whenever mouse button 38 // moves (and mouse is down) 39 protected void Painter_MouseMove( 40 object sender, System.Windows.Forms.MouseEventArgs e ) 41 { 42 if ( shouldPaint ) 43 { 44 Graphics graphics = CreateGraphics(); 45 graphics.FillEllipse( 46 new SolidBrush( Color.BlueViolet ), 47 e.X, e.Y, 4, 4 ); 48 } 49 50 } // end Painter_MouseMove 51 52 } // end class Painter Program will draw only if shouldPaint is true Creates the graphic object for the form Provides method for drawing various shapes Method FillEllipse draws a circle at every point the mouse cursor moves over (at rate determined by OS) and shouldPaint is true SolidBrush object determines the color of the shape drawn Create new SolidBrush object by passing the constructor a Color value Structure Color contain numerous predefined color constants The oval in a bounding rectangle is specified by x and y coordinates of its upper-left corner of and the pixels height and width of the bounding rectangle are supplied to the parameter list System.Object System.MarshalByRefObject System.Drawing.Brush System.Drawing.SolidBrush
102
Jozef Goetz contribution, 2012 101 14.11 Mouse-Event Handling (Cont.) The ellipse-drawing could have been written to use the Using statement: using ( Graphics graphics = CreateGraphics() ) { graphics.FillEllipse( new SolidBrush( Color.BlueViolet ), e.X, e.Y, 4, 4 ); }
103
Jozef Goetz contribution, 2012 102 14.12 Keyboard-Event Handling Key Events Generated when keys are pressed and released 1. KeyPress Can return a Char for any ASCII character pressed 2. KeyUp and 3. KeyDown Test for special modifier keys Use KeyEventArgs
104
Jozef Goetz contribution, 2012 103 14.12 Keyboard-Event Handling Key events when keys are pressed/released There are 3 key events: Delegate Key Press EventHandler –Event argument KeyPressEventArgs contains info about which ch-r is pressed –event 1. KeyPress ASCII character pressed No modifier keys (Alt, Control, Shift or the function keys like F1) Delegate KeyEventHandler –Event argument KeyEventArgs contains info about modifier keys –events: 2. KeyUp or 3. KeyDown Special modifier keys –the key’s Key enumeration value can be returned Key events are generated when keyboard's keys are pressed and released. These events can be handled by any control that inherits from System.Windows.Forms.Control.
105
Jozef Goetz contribution, 2012 104 14.12 Keyboard-Event Handling
106
2002 Prentice Hall. All rights reserved. Outline 105 KeyDemo.cs 1 // Fig. 14.40: KeyDemo.cs 2 // Displaying information about the key the user pressed. 3 4 using System; 5 using System.Drawing; 6 using System.Collections; 7 using System.ComponentModel; 8 using System.Windows.Forms; 9 using System.Data; 10 11 // form to display key press 12 // information--contains two labels 13 public class KeyDemo : System.Windows.Forms.Form 14 { 15 private System.Windows.Forms.Label charLabel; //for key pressed 16 private System.Windows.Forms.Label keyInfoLabel; //for modifier 17 18 private System.ComponentModel.Container components = null; 19 20 /// The main entry point for the application. 21 [STAThread] 22 static void Main() 23 { 24 Application.Run( new KeyDemo() ); 25 } 26 // in design mode go to Form’s Event and double on KeyPress event 27 // display the character pressed using key char 28 protected void KeyDemo_KeyPress( 29 object sender, System.Windows.Forms.KeyPressEventArgs e ) 30 { 31 charLabel.Text = "Key pressed: " + e.KeyChar; 32 } 33 Forms contain two LabelsLabel for key pressedLabel for modifier informationInitially emptyKeyPress event handler of the Form Accesses the KeyChar property of the KeyPressEventArgs object Key pressed as a char Display the key pressed If key pressed is not ASCII, charLabel remains empty
107
2002 Prentice Hall. All rights reserved. Outline 106 KeyDemo.cs 34 // display modifier keys, key code, key data and key value 35 private void KeyDemo_KeyDown( 36 object sender, System.Windows.Forms.KeyEventArgs e ) 37 { 38 keyInfoLabel.Text = 39 "Alt: " + ( e.Alt ? "Yes" : "No") + '\n' + 40 "Shift: " + ( e.Shift ? "Yes" : "No" ) + '\n' + 41 "Ctrl: " + ( e.Control ? "Yes" : "No" ) + '\n' + 42 "KeyCode: " + e.KeyCode + '\n' + 43 "KeyData: " + e.KeyData + '\n' + 44 "KeyValue: " + e.KeyValue; 45 } 46 47 // clear labels when key released 48 private void KeyDemo_KeyUp( 49 object sender, System.Windows.Forms.KeyEventArgs e ) 50 { 51 keyInfoLabel.Text = ""; 52 charLabel.Text = ""; 53 } KeyEventArgs object This block test for special keys, return bool if matched Uses Alt, Shift, and Control properties Displays the KeyCode, KeyData, and KeyValue properties KeyCode returns a Keys enumeration converted into a string using ToString KeyCode returns the key pressed without modifier keys information KeyData property returns a Keys enumeration with data about modifier keys KeyValue returns the key code as an integer KeyUp event handler clears both labelsKeyDown event still raised so keyInfoLabel displays information Keys enumeration can test for specific keys by comparing key pressed to KeyCode b) F12 pressed
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.