Jozef Goetz contribution, 2012 1  2011-13 Pearson Education, Inc. All rights reserved.  2002 Prentice Hall. All rights reserved.

Slides:



Advertisements
Similar presentations
Chapter 1: An Introduction to Visual Basic 2012
Advertisements

CHAPTER TWO Creating Simple Visual Basic.NET Windows Applications.
© by Pearson Education, Inc. All Rights Reserved. continued …
C# Programming: From Problem Analysis to Program Design1 9 Programming Based on Events.
Chapter 12- GUI Concepts I. 12.1Introduction 12.2 Windows Forms 12.3 Event-Handling Model Basic Event Handling 12.4 Control Properties and Layout.
C# Programming: From Problem Analysis to Program Design1 Programming Based on Events C# Programming: From Problem Analysis to Program Design 3 rd Edition.
GUI-Labels, TextBoxes and Buttons Label- displays read-only text Common properties:  Font – font used by the text of label  Text – text to appear on.
Programming Based on Events
 2007 Dr. Natheer Khasawneh 1 Chapter 13. Graphical User Interface Concepts: Part 1 Continue from previouse lecture.
Graphical User Interface (GUI) A GUI allows user to interact with a program visually. GUIs are built from GUI components. A GUI component is an object.
Programming Based on Events
Events. Events Single Event Handlers Click Event Mouse Events Key Board Events Create and handle controls in runtime Outline.
GUI-Labels, TextBoxes and Buttons Label- displays read-only text Label- displays read-only text Common properties: Common properties: Font – font used.
Copyright © 2012 Pearson Education, Inc. Chapter 2 Introduction to Visual C#
ASP.NET Programming with C# and SQL Server First Edition
 2006 Pearson Education, Inc. All rights reserved Graphical User Interface Concepts: Part I.
Chapter 3 Introduction to Event Handling and Windows Forms Applications.
Chapter 9 Introduction to ActionScript 3.0. Chapter 9 Lessons 1.Understand ActionScript Work with instances of movie clip symbols 3.Use code snippets.
BIM313 – Advanced Programming Simple Controls 1. Contents Traditional Controls – Labels, Text Boxes, Buttons, Check Boxes, List Boxes, Combo Boxes Advanced.
Microsoft Visual Basic 2005: Reloaded Second Edition
Chapter 8: Writing Graphical User Interfaces
CHAPTER TWO Creating Simple Visual Basic.NET Windows Applications.
Chapter 2 More Controls Programming in C#. NET © 2003 by The McGraw-Hill Companies, Inc. All rights reserved.
T U T O R I A L  2009 Pearson Education, Inc. All rights reserved Typing Application Introducing Keyboard Events, Menus, Dialogs and the Dictionary.
Java Software Solutions Lewis and Loftus Chapter 10 1 Copyright 1997 by John Lewis and William Loftus. All rights reserved. Graphical User Interfaces --
Chapter 8: Writing Graphical User Interfaces Visual Basic.NET Programming: From Problem Analysis to Program Design.
G RAPHICAL U SER I NTERFACE C ONCEPTS : P ART 1 1 Outline Introduction Windows Forms Event-Handling Model - Basic Event Handling.
Chapter One An Introduction to Visual Basic 2010 Programming with Microsoft Visual Basic th Edition.
 2002 Prentice Hall. All rights reserved. 1 Chapter 12 – Graphical User Interface Concepts: Part 1 Outline 12.1 Introduction 12.2 Windows Forms 12.3 Event-Handling.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 12 - Graphical User Interface Concepts: Part.
 2002 Prentice Hall. All rights reserved. 1 Outline 12.1 Introduction 12.2 Windows Forms 12.3 Event-Handling Model Basic Event Handling 12.4 Control.
Visual C# 2012 How to Program 1. 2  A graphical user interface (GUI) allows a user to interact visually with a program.  Figure 14.1 shows a Visual.
T U T O R I A L  2009 Pearson Education, Inc. All rights reserved. 1 3 Welcome Application Introduction to Visual Programming.
1 Chapter Eleven Handling Events. 2 Objectives Learn about delegates How to create composed delegates How to handle events How to use the built-in EventHandler.
CHAPTER TWO Creating Simple Visual Basic.NET Windows Applications.
Creating Graphical User Interfaces (GUI’s) with MATLAB By Jeffrey A. Webb OSU Gateway Coalition Member.
BIM211 – Visual Programming Interacting with Users Graphics 1.
G RAPHICAL U SER I NTERFACE C ONCEPTS : P ART 2 1 Outline Control Properties and Layout Label s, TextBox es and Button s GroupBox es and Panel s CheckBox.
1 Chapter Nine Using GUI Objects and the Visual Studio IDE.
Visual C# 2012 How to Program © by Pearson Education, Inc. All Rights Reserved.
C# GUI - Basics. Objectives.NET supports two types: WinForms, traditional, desktop GUI apps. WebForms – newer, for Web apps. Visual Studio.NET supports.
Visual C# 2012 How to Program © by Pearson Education, Inc. All Rights Reserved.
Chapter 4 Introduction to Classes, Objects, Methods and strings
Chapter 2: Variables, Functions, Objects, and Events JavaScript - Introductory.
C # Graphical User Interfaces BIT-6 Saad Liaquat.
Object-Oriented Application Development Using VB.NET 1 Chapter 10 VB.NET GUI Components Overview.
 2002 Prentice Hall. All rights reserved. 1 Chapter 2 – Introduction to the Visual Studio.NET IDE Outline 2.1Introduction 2.2Visual Studio.NET Integrated.
Chapter 2 More Controls Programming in C#. NET Objectives Use text boxes, group boxes, check boxes, radio buttons, and picture boxes effectively.
T U T O R I A L  2009 Pearson Education, Inc. All rights reserved Student Grades Application Introducing Two-Dimensional Arrays and RadioButton.
 2002 Prentice Hall. All rights reserved. 1 Outline Mouse Event Handling Keyboard Event Handling Graphical User Interface Concepts:
Appendix A: Windows Forms. 2 Overview Describe the structure of a Windows Forms application –application entry point –forms –components and controls Introduce.
IE 411/511: Visual Programming for Industrial Applications Lecture Notes #2 Introduction to the Visual Basic Express 2010 Integrated Development Environment.
 2002 Prentice Hall. All rights reserved. 1 Introduction to the Visual Studio.NET IDE Outline Introduction Visual Studio.NET Integrated Development Environment.
Chapter 2: The Visual Studio.NET Development Environment Visual Basic.NET Programming: From Problem Analysis to Program Design.
Dr. Abraham Professor UTPA Graphical User Interface.
 You won’t write a single line of program code.  Instead, you’ll use visual programming techniques.  Visual Studio processes your actions (such as mouse.
Graphical User Interface Concepts - Part 1 Session 08 Mata kuliah: M0874 – Programming II Tahun: 2010.
 2007 Pearson Education, Inc. All rights reserved Graphical User Interface Concepts: Part 1.
Chapter 1: An Introduction to Visual Basic 2015
Graphical User Interface Concepts: Part I
Chap 7. Building Java Graphical User Interfaces
Chapter 12 - Graphical User Interface Concepts: Part 1
Graphical User Interfaces -- Introduction
Visual programming Chapter 3: GUI (Graphical User Interface) Part I
Graphical User Interface Concepts: Part I
Chapter 14 Graphical User Interfaces with Windows Forms: Part 1
6. WinForms 2003 C# GUI - Basics.
Overview of the IDE Visual Studio .NET is Microsoft’s Integrated Development Environment (IDE) for creating, running and debugging programs (also.
Week 2: WINDOWS PROGRAMMING
Presentation transcript:

Jozef Goetz contribution,  Pearson Education, Inc. All rights reserved.  2002 Prentice Hall. All rights reserved.

Jozef Goetz contribution, Outline 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 Mouse Event Handling 14.12Keyboard Event Handling Chapter 14 - Graphical User Interface Concepts: Part 1

Jozef Goetz contribution,  …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  All the better to see you with my dear.  The Big Bad Wolf to Little Red Riding Hood

Jozef Goetz contribution, 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.

Jozef Goetz contribution, 2012 © by Pearson Education, Inc. All Rights Reserved.

Jozef Goetz contribution, 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

Jozef Goetz contribution, 2012  Figure 14.1 shows a Visual C# 2010 Edition window containing various GUI controls Introduction (Cont.)

Jozef Goetz contribution, Fig | Some basic GUI controls.

Jozef Goetz contribution, Windows Form

Jozef Goetz contribution, Windows Forms  Windows Forms (WinForms)  Create GUIs for programs  The form is a graphical element that appears on the desktop

Jozef Goetz contribution, 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

Jozef Goetz contribution, Fig | Components and controls for Windows Forms. Display all controls and components Categories that organize controls and components by functionality

Jozef Goetz contribution, 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

Jozef Goetz contribution, 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

 2002 Prentice Hall. All rights reserved. Outline 15 SimpleEventExamp le.cs 1 // Fig 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; // program that shows a simple event handler 12 public class MyForm : System.Windows.Forms.Form 14 { 14 private System.ComponentModel.Container components = null; // Visual Studio.NET generated code [STAThread] 19 static void Main() 20 { 21 Application.Run( new MyForm() ); 22 } // 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 } } // 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

Jozef Goetz contribution, 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

Jozef Goetz contribution, Basic Event Handling Fig. List of Form events. Class name List of events

Jozef Goetz contribution, 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.

Jozef Goetz contribution, 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

Jozef Goetz contribution, 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

Jozef Goetz contribution, 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

Jozef Goetz contribution, 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.

Jozef Goetz contribution, 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)

Jozef Goetz contribution, 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.

Jozef Goetz contribution, 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.

Jozef Goetz contribution, 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.

Jozef Goetz contribution, 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.

Jozef Goetz contribution, 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.

Jozef Goetz contribution, 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.

Jozef Goetz contribution, 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.

Jozef Goetz contribution, Outline  SimpleEventEx ampleForm.cs

Jozef Goetz contribution, Fig | First half of the Visual Studio generated code file.

Jozef Goetz contribution, Fig | Second half of the Visual Studio generated code file. <= Registration

Jozef Goetz contribution, Fig | Viewing events for a Button control in the Properties window. Properties icon Events icon Selected events

Jozef Goetz contribution, Fig | List of Button events. Class name List of events Help => Index

Jozef Goetz contribution, Fig | Click event details. Event name Event type Event argument class Fig Details of Click event where delegate EventHandler is associated with Click event

Jozef Goetz contribution, 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

Jozef Goetz contribution, 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

Jozef Goetz contribution, 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)

Jozef Goetz contribution, 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

Jozef Goetz contribution, Control Properties and Layout

Jozef Goetz contribution, Control Properties and Layout Fig Anchoring demonstration. Constant distance to left and top sides Before resize After resize Unanchored control moves relative to the position when the form is resized

Jozef Goetz contribution, Control Properties and Layout Fig Manipulating 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

Jozef Goetz contribution, Control Properties and Layout Fig Docking demonstration. Control expands along top portion of the form

Jozef Goetz contribution, Control Properties and Layout

Jozef Goetz contribution, 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

Jozef Goetz contribution, 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

Jozef Goetz contribution, Labels TextBoxes and Buttons

Jozef Goetz contribution, Labels TextBoxes and Buttons

Jozef Goetz contribution, Labels TextBoxes and Buttons

 2002 Prentice Hall. All rights reserved. Outline 51 LabelTextBoxButt onTest.cs 1 // Fig : 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; // 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; /// 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

 2002 Prentice Hall. All rights reserved. Outline 52 LabelTextBoxButt onTest.cs /// 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 } base.Dispose( disposing ); 51 } #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

 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 ); // 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 = ""; // 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

 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; // 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 ); } // end method InitializeComponent // end collapsible region started on line #endregion /// 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

 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 } } // end class LabelTextBoxButtonTest } // 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

Jozef Goetz contribution, Outline  LabelTextBoxButtonTestForm.cs

Jozef Goetz contribution, 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

Jozef Goetz contribution, GroupBoxes and Panels Fig GroupBox properties. Fig Panel properties.

Jozef Goetz contribution, GroupBox es and Panel s Fig Creating 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

Jozef Goetz contribution, 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.

Jozef Goetz contribution, 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.

 2002 Prentice Hall. All rights reserved. Outline 62 GroupBoxPanelExa mple.cs 1 // Fig : 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; /// 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; private System.Windows.Forms.GroupBox mainGroupBox; 20 private System.Windows.Forms.Label messageLabel; 21 private System.Windows.Forms.Panel mainPanel; private System.ComponentModel.Container components = null; // Visual Studio.NET-generated Dispose method [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

 2002 Prentice Hall. All rights reserved. Outline 63 GroupBoxPanelExa mple.cs 33 // event handlers to change messageLabel // event handler for hi button 36 private void hiButton_Click( 37 object sender, System.EventArgs e ) 38 { 39 messageLabel.Text= "Hi pressed"; 40 } // event handler for bye button 43 private void byeButton_Click( 44 object sender, System.EventArgs e ) 45 { 46 messageLabel.Text = "Bye pressed"; 47 } // 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 } // 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 } } // 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

 2002 Prentice Hall. All rights reserved. Outline 64 GroupBoxPanelExa mple.cs Program Output hiButton_Click leftButton_ClickrightButton_Click

Jozef Goetz contribution, 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

Jozef Goetz contribution, 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

Jozef Goetz contribution, CheckBox es

 2002 Prentice Hall. All rights reserved. Outline 68 CheckBoxTest.cs 1 // Fig : 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; /// 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; private System.Windows.Forms.Label outputLabel; private System.ComponentModel.Container components = null; // Visual Studio.NET-generated Dispose method /// 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

 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 } // 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 } } // 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.

 2002 Prentice Hall. All rights reserved. Outline 70 CheckBoxTest.cs Program Output Result when bold is selectedResult when both styles are selected

Jozef Goetz contribution, RadioButton s

Jozef Goetz contribution, 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.

Jozef Goetz contribution, 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.

 2002 Prentice Hall. All rights reserved. Outline 74 RadioButtonsTest.cs 1 // Fig : 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; /// 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; 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; private System.Windows.Forms.GroupBox groupBox2; 32 private System.Windows.Forms.GroupBox groupBox1; 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

 2002 Prentice Hall. All rights reserved. Outline 75 RadioButtonsTest.cs 35 private MessageBoxButtons buttonType = 36 MessageBoxButtons.OK; /// The main entry point for the application. 39 [STAThread] 40 static void Main() 41 { 42 Application.Run( new RadioButtonsTest() ); 43 } // 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; // display OK and Cancel buttons 53 else if ( sender == okCancelButton ) 54 buttonType = MessageBoxButtons.OKCancel; // display Abort, Retry and Ignore buttons 57 else if ( sender == abortRetryIgnoreButton ) 58 buttonType = MessageBoxButtons.AbortRetryIgnore; // display Yes, No and Cancel buttons 61 else if ( sender == yesNoCancelButton ) 62 buttonType = MessageBoxButtons.YesNoCancel; // display Yes and No buttons 65 else if ( sender == yesNoButton ) 66 buttonType = MessageBoxButtons.YesNo; // 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

 2002 Prentice Hall. All rights reserved. Outline 76 RadioButtonsTest.cs 70 else 71 buttonType = MessageBoxButtons.RetryCancel; } // end method buttonType_CheckedChanged // 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; // display exclamation point 83 else if ( sender == exclamationButton ) 84 iconType = MessageBoxIcon.Exclamation; // display information icon 87 else if ( sender == informationButton ) 88 iconType = MessageBoxIcon.Information; else // only one option left--display question mark 91 iconType = MessageBoxIcon.Question; } // end method iconType_CheckedChanged // 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 ); // 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

 2002 Prentice Hall. All rights reserved. Outline 77 RadioButtonsTest.cs 105 { 106 case DialogResult.OK: 107 displayLabel.Text = "OK was pressed."; 108 break; case DialogResult.Cancel: 111 displayLabel.Text = "Cancel was pressed."; 112 break; case DialogResult.Abort: 115 displayLabel.Text = "Abort was pressed."; 116 break; case DialogResult.Retry: 119 displayLabel.Text = "Retry was pressed."; 120 break; case DialogResult.Ignore: 123 displayLabel.Text = "Ignore was pressed."; 124 break; case DialogResult.Yes: 127 displayLabel.Text = "Yes was pressed."; 128 break; case DialogResult.No: 131 displayLabel.Text = "No was pressed."; 132 break; } // end switch } // end method displayButton_Click } // end class RadioButtonsTest The result input will help determine which text to display among the cases

 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

 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

Jozef Goetz contribution, PictureBoxes  PictureBoxes  Display images  Bitmap  GIF (Graphics Interchange Format)  JPEG (Joint Photographic Expert Group)  Metafile  Image property  Image to be displayed

Jozef Goetz contribution, 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

Jozef Goetz contribution, PictureBox es

 2002 Prentice Hall. All rights reserved. Outline 83 PictureBoxTest.c s 1 // Fig 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; /// 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; private int imageNum = -1; /// The main entry point for the application. 21 [STAThread] 22 static void Main() 23 { 24 Application.Run( new PictureBoxTest() ); 25 } // 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

 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 } } // 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

Jozef Goetz contribution, Outline  PictureBoxTestForm.cs

Jozef Goetz contribution, 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

Jozef Goetz contribution, 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.

Jozef Goetz contribution, Fig | ToolTip properties and events.

Jozef Goetz contribution, Outline  ToolTipEx ampleForm.cs (a) (b)

Jozef Goetz contribution, Fig | 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

Jozef Goetz contribution, Fig | 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

Jozef Goetz contribution, NumericUpDown 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

Jozef Goetz contribution, Fig | NumericUpDown properties and event.

Jozef Goetz contribution, Outline  interestCalculator Form.cs  (1 of 2)

Jozef Goetz contribution, Outline  interestCal culatorFor m.cs  (2 of 2) Click to increase number of years Click to decrease number of years NumericalUpDown control

Jozef Goetz contribution, Outline  interestCal culatorFor m.cs  (2 of 2) Click to increase number of years Click to decrease number of years // Fig : 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

Jozef Goetz contribution, 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

Jozef Goetz contribution, Mouse Event Handling

 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; /// creates a form as a drawing surface 12 public class Painter : System.Windows.Forms.Form 13 { 14 bool shouldPaint = false; // whether to paint /// 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 } // 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

 2002 Prentice Hall. All rights reserved. Outline 100 Painter.cs Program Output // 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 } } // end Painter_MouseMove } // 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

Jozef Goetz contribution, 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 ); }

Jozef Goetz contribution, 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

Jozef Goetz contribution, 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.

Jozef Goetz contribution, Keyboard-Event Handling

 2002 Prentice Hall. All rights reserved. Outline 105 KeyDemo.cs 1 // Fig : 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; // 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 private System.ComponentModel.Container components = null; /// 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

 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 } // 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