Lecture 5: Delegates, Events and GUI Lisa (Ling)...
Transcript of Lecture 5: Delegates, Events and GUI Lisa (Ling)...
![Page 1: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/1.jpg)
C# Programming in DepthProf. Dr. Bertrand Meyer
March 2007 – May 2007
Chair of Software Engineering
Lecture 5: Delegates, Events and GUI
Lisa (Ling) Liu
![Page 2: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/2.jpg)
C# programming lecture 5: Delegates, Events and GUI 2
Overview
DelegatesEventsGUI
![Page 3: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/3.jpg)
C# programming lecture 5: Delegates, Events and GUI 3
Delegate
A delegate is a type-safe object that points to another (or possibly multiply methods) in the application, which can be invoked at a late time.
A delegate type maintains three pieces of information:The name of the method which it makes callsThe argument (if any) of this methodThe return value (if any) of this method
![Page 4: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/4.jpg)
C# programming lecture 5: Delegates, Events and GUI 4
Defining a delegate in C#
A delegate type should be defined to match the signature of the method it points to.
public delegate int BinaryOp (int x, int y);
A C# delegate definition results in a sealed class with three compiler-generated methods whose parameter and return types are based on the delegate’s declaration.
//pseudo-code behindpublic sealed class DelegateName : System.MulticastDelegate{
public DelegateName (object target, uint functionAddress);public delegateReturnValue Invoke (allDelegateInputParams);public IAsyncResult BeginInvoke (allDelegateInputRefOutParams,
AsynCallback cb, object state);public delegateReturnValue EndInvoke (allDelegateRefOutParams,
IAsyncResult result);}
![Page 5: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/5.jpg)
C# programming lecture 5: Delegates, Events and GUI 5
Invoke a delegatepublic delegate int BinaryOp (int x, int y);public class SimpleMath{
public static int Add (int x, int y){return x+y;}public int Subtract (int x, int y){return x – y;}
}
static void Main (){
int result;BinaryOp b = new BinaryOp(SimpleMath.Add);result = b(10, 10);
}
![Page 6: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/6.jpg)
C# programming lecture 5: Delegates, Events and GUI 6
Investigate a delegate object
MethoTargetGetInvocationListCombineRemoveRemoveAll
![Page 7: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/7.jpg)
C# programming lecture 5: Delegates, Events and GUI 7
Event
Events provide a way for a class or object to notify other classes or objects when something of interest happens.
The class that sends (or raises) the event is called the publisher and the classes that receive (or handle) the event are called subscribers.
![Page 8: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/8.jpg)
C# programming lecture 5: Delegates, Events and GUI 8
Properties of events
The publisher determines when an event is raised; the subscribers determine what action is taken in response to the event.An event can have multiple subscribers. A subscriber can handle multiple events from multiple publishers.Events that have no subscribers are never called.Events are commonly used to signal user actions such as button clicks or menu selections in graphical user interfaces.When an event has multiple subscribers, the event handlers are invoked synchronously when an event is raised. Events can be used to synchronize threads.In the .NET Framework class library, events are based on the EventHandler delegate and the EventArgs base class.
![Page 9: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/9.jpg)
C# programming lecture 5: Delegates, Events and GUI 9
Defining a event
1. Define a delegate that points to the method to be called when the event is fired
public delegate void CarEventHandler(string msg);
2. Declare events in terms of the related delegate
public event CarEventHandler Exploded;
![Page 10: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/10.jpg)
C# programming lecture 5: Delegates, Events and GUI 10
Send event
Call the method (event handler) pointed by the event.
public void SpeedUp (int delta){
// If the car is dead, fire Exploded event.if (carIsDead){
if (Exploded != null)Exploded("Sorry, this car is dead...");
}}
![Page 11: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/11.jpg)
C# programming lecture 5: Delegates, Events and GUI 11
Register event handler
Car.CarEventHandler d = new Car.CarEventHandler(CarExploded);c1.Exploded += d;
public static void CarExploded (string msg){ Console.WriteLine(msg); }
![Page 12: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/12.jpg)
C# programming lecture 5: Delegates, Events and GUI 12
Building a Main Window
Derive a new class from System.Windows.Forms.Form
Configure your application’s Main() method to invoke Application.Run(), passing an instrance of your Form-derived type as an argument
![Page 13: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/13.jpg)
C# programming lecture 5: Delegates, Events and GUI 13
Event-driven applications
Idea is very simple:individual user actions are translated into “events”events are passed, one by one, to application for processing
this is how most GUIs are programmed…
GUI App
![Page 14: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/14.jpg)
C# programming lecture 5: Delegates, Events and GUI 14
GUI-based events
Mouse moveMouse clickMouse double-clickKey pressButton clickMenu selectionChange in focusWindow activationetc.
![Page 15: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/15.jpg)
C# programming lecture 5: Delegates, Events and GUI 15
Code-behind
Events are handled by methods that live behind visual interface
known as "code-behind"our job is to program these methods…
![Page 16: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/16.jpg)
C# programming lecture 5: Delegates, Events and GUI 16
Call-backs
Events are a call from object back to us…How is connection made?
setup by code auto-generated by Visual Studio
![Page 17: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/17.jpg)
C# programming lecture 5: Delegates, Events and GUI 17
Example: a windowing application
GUI apps are based on the notion of forms and controls…a form represents a windowa form contains 0 or more controlsa control interacts with the user
Let's create a GUI app in a series of steps…
![Page 18: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/18.jpg)
C# programming lecture 5: Delegates, Events and GUI 18
Step 1
Create a new project of type “Windows Application”a form will be created for you automatically…
![Page 19: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/19.jpg)
C# programming lecture 5: Delegates, Events and GUI 19
Step 2 — GUI design
Select desired controls from toolbox…hover mouse over toolbox to revealdrag-and-drop onto formposition and resize control
![Page 20: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/20.jpg)
C# programming lecture 5: Delegates, Events and GUI 20
GUI design cont’d…
A simple calculator:
Position and configure controlsclick to selectset properties via Properties window
![Page 21: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/21.jpg)
C# programming lecture 5: Delegates, Events and GUI 21
Step 3 — code design
“Code behind” the form…Double-click the control you want to program
reveals coding window
![Page 22: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/22.jpg)
C# programming lecture 5: Delegates, Events and GUI 22
Step 4 — run mode
Run!
![Page 23: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/23.jpg)
C# programming lecture 5: Delegates, Events and GUI 23
Break mode?
Easily triggered in this application via invalid input…
![Page 24: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/24.jpg)
C# programming lecture 5: Delegates, Events and GUI 24
WinForms
Another name for traditional, Windows-like GUI applications
vs. WebForms, which are web-based
Implemented using FCL (Framework Class Library)hence portable to any .NET platform
![Page 25: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/25.jpg)
C# programming lecture 5: Delegates, Events and GUI 25
Abstraction
FCL acts as a layer of abstractionseparates WinForm app from underlying platform
System.Windows.Forms.Form
CLR
Windows OS
instance of
FCL classobject
![Page 26: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/26.jpg)
C# programming lecture 5: Delegates, Events and GUI 26
Form properties
Form properties typically control visual appearance:AutoScrollBackgroundImageControlBoxFormBorderStyle (sizable?)IconLocationSizeStartPositionText (i.e. window's caption)WindowState (minimized, maximized, normal)
Form1 form;form = new Form1();form.WindowState = FormWindowState.Maximized;form.Show();
![Page 27: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/27.jpg)
C# programming lecture 5: Delegates, Events and GUI 27
Form methods
Actions you can perform on a form:
Activate:give this form the focusClose: close & release associated resourcesHide: hide, but retain resources to show form laterRefresh: redrawShow: make form visible on the screen, & activateShowDialog: show modally
form.Hide(); ...
form.Show();
![Page 28: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/28.jpg)
C# programming lecture 5: Delegates, Events and GUI 28
Form events
Events you can respond to:bring up properties windowdouble-click on event name
Load: occurs just before form is shown for first time
Closing: occurs as form is being closed (ability to cancel)
Closed: occurs as form is definitely being closedResize: occurs after user resizes formClick: occurs when user clicks on form's backgroundKeyPress: occurs when form has focus & user presses
key
![Page 29: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/29.jpg)
C# programming lecture 5: Delegates, Events and GUI 29
Example
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{DialogResult r;
r = MessageBox.Show("Do you really want to close?", "MyApp", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (r == DialogResult.No)e.Cancel = true;
}
![Page 30: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/30.jpg)
C# programming lecture 5: Delegates, Events and GUI 30
Controls
User-interface objects on the form:labelsbuttonstext boxesmenuslist & combo boxesoption buttonscheck boxesetc.
![Page 31: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/31.jpg)
C# programming lecture 5: Delegates, Events and GUI 31
Abstraction
Like forms, controls are based on classes in the FCL:System.Windows.Forms.LabelSystem.Windows.Forms.TextBoxSystem.Windows.Forms.Buttonetc.
Controls are instances of these classes object
object
object
object
object
object
![Page 32: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/32.jpg)
C# programming lecture 5: Delegates, Events and GUI 32
Who creates all these objects?
Who is responsible for creating control instances?code is auto-generated by Visual Studiowhen form object is created, controls are then created…
![Page 33: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/33.jpg)
C# programming lecture 5: Delegates, Events and GUI 33
Naming conventions
Set control's name via Name propertyA common naming scheme is based on prefixes:
cmdOK refers to a command button controllstNames refers to a list box control txtFirstName refers to a text box control
![Page 34: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/34.jpg)
C# programming lecture 5: Delegates, Events and GUI 34
Labels
For static display of textused to label other things on the formused to display read-only results
Interesting properties:Text: what user seesFont: how he/she sees it
![Page 35: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/35.jpg)
C# programming lecture 5: Delegates, Events and GUI 35
Command buttons
For the user to click & perform a task
Interesting properties:Text: what user seesFont: how he/she sees itEnabled: can it be clicked
Interesting events:Click: occurs when button is "pressed"
![Page 36: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/36.jpg)
C# programming lecture 5: Delegates, Events and GUI 36
Text boxes
Most commonly used control!for displaying textfor data entry
Lots of interesting features…
![Page 37: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/37.jpg)
C# programming lecture 5: Delegates, Events and GUI 37
Text box properties
Basic properties:Text: denotes the entire contents of text box (a string)Modified: has text been modified by user? (True / False)ReadOnly: set if you want user to view text, but not modify
Do you want multi-line text boxes?MultiLine: True allows multiple lines of textLines: array of strings, one for each line in text boxScrollBars: none, horizontal, vertical, or both
![Page 38: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/38.jpg)
C# programming lecture 5: Delegates, Events and GUI 38
Text box events
Interesting events:Enter, Leave: occurs on change in focusKeyPress: occurs on ascii keypressKeyDown, KeyUp: occurs on any key combinationTextChanged:occurs whenever text is modified
Validating and ValidatedValidating gives you a chance to cancel on invalid input
![Page 39: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/39.jpg)
C# programming lecture 5: Delegates, Events and GUI 39
List Boxes
Great for displaying / maintaining list of datalist of stringslist of objects (list box calls ToString() to display)
Customer[] customers;.. // create & fill array with objects....
// display customers in list boxforeach (Customer c in customers)this.listBox1.Items.Add(c);
// display name of selected customer (if any)Customer c;c = (Customer) this.listBox1.SelectedItem;if (c == null)return;
elseMessageBox.Show(c.Name);
![Page 40: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/40.jpg)
C# programming lecture 5: Delegates, Events and GUI 40
Just the tip of the iceberg…
Menus, dialogs, toolbars, etc.
Thousands of additional controls.NET and ActiveXright-click on Toolbox"Customize Toolbox
![Page 41: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/41.jpg)
C# programming lecture 5: Delegates, Events and GUI 41
Summary
Event-driven programming is very intuitive for GUI apps
Forms are the first step in GUI designeach form represents a window on the screenform designer enables drag-and-drop GUI constructionUsers interact primarily with form's controlslabels, text boxes, buttons, etc.implies that GUI programming is control programming
![Page 42: Lecture 5: Delegates, Events and GUI Lisa (Ling) Liuse.inf.ethz.ch/old/teaching/ss2007/251-0290-00/slides/05...User-interface objects on the form: ¾labels ¾buttons ¾text boxes ¾menus](https://reader031.fdocuments.net/reader031/viewer/2022030419/5aa5baf87f8b9a185d8db499/html5/thumbnails/42.jpg)
C# programming lecture 5: Delegates, Events and GUI 42
Questions?