COS240Lec33_CSGUIProgramming

advertisement
9
Introduction to
Windows
Programming
C# Programming: From Problem Analysis to Program Design
3rd Edition
C# Programming: From Problem Analysis to Program Design
1
COS240 O-O Languages
AUBG, COS dept
Lecture 33
Title:
C# vs. Java
(GUI Programming)
Reference: COS240 Syllabus
Lecture Contents:
• Contrasting Windows and Console
Applications
• Graphical User Interfaces
• Using C# & Visual Studio to Create
Windows based Applications
• Windows Forms
• Controls
Contrasting Windows and Console
Applications
• Console applications
– Each line in Main( ) method executed sequentially –
then the program halts
– Method calls might branch to different locations in the
program, however control always returns back to Main
– Program initiates interaction with the user by calling the
OS to get data using ReadLine() method
– Program calls OS to output data through method calls
like WriteLine() or Write()
• Console applications run IPO model of
computing process
Contrasting Windows and Console
Applications
• Windows applications
– Instead of the program executing sequential
statements from top to bottom, the application,
once launched, sits in what is called a process
loop and waits for an event
– Sits in a process loop, waiting for event to
execute
• Windows applications run Event-driven
model of a computing process
Contrasting Windows and Console
Applications
• Event: notification from OS that an action,
such as the user clicking the mouse or the user
pressing a key, has occurred
• Instead of calling the OS with IO request as
console applications, Windows applications
receive messages from OS that event has
occurred
• It is must to write methods, called Event
Handlers to indicate what should be done
when an event occurs
Graphical User Interfaces
• Windows applications also look different
from console applications
• User Interface: front end of a program
– Visual image you see when you run a program
– Algorithmic functionality stays behind GUI
– Often users of programs actually identify the
interface of the program itself, when in reality,
the interface is just one facet of the program.
– Algorithmic complexity is hidden behind GUI.
Graphical User Interfaces
• Graphical user interface (GUI) includes:
– Menus, labels, text boxes, list boxes,
– Other controls (pictures, buttons, etc.)
– Text in many different colors and sizes
• Controls are objects that can display and
respond to user interaction.
• Controls are placed in a container, called
form, which is an object as well. It is
instance of a class derived from predefined
class Form
Windows Applications
• Reference and import
System.Windows.Forms namespace
• Class heading definition
– Includes not only the class name, but a colon
followed by another class name
• Derived class (first class)
• Colon ( : ) – delimiter, separator
• Base class (second class)
• public class Form1 : Form
• Derived classes inherit from base class
C# Programming: From Problem Analysis to Program Design
9
Windows Applications (continued)
• Text
– A property for setting/getting title bar caption
– Can be used in constructor
• Windows forms/controls offer many properties
including Text, Color, Font, and Location
• Execution begins in Main( ) method
– Main( ) is located in Program.cs file for the application
– Call to Run( ) method places application in process
loop
C# Programming: From Problem Analysis to Program Design
10
// Windows0.cs
Author: Doyle
using System.Windows.Forms;
// Line 1
New
namespace Windows0
namespace
referenced
{
Base class
public class Form1 : Form
// Line 2
{
Constructor
public Form1( )
// Line 3
{
Text = "Simple Windows Application"; // Line 4
Sets
}
title bar
caption
static void Main( )
{
Form1 winForm = new Form1( );
// Line 5
Application.Run(winForm);
// Line 6
}
Starts
process
}
loop
}
C# Programming:
From Problem Analysis to Program Design
11
Windows Application (continued)
Output
generated
from
Windows0
application
Figure 9-1 Windows-based form
C# Programming: From Problem Analysis to Program Design
12
Elements of Good Design
• Appearance matters
– Human-computer interaction (HCI) research
• Design considerations
–
–
–
–
–
Consistency
Alignment
Avoid clutter
Color
Target audience
C# Programming: From Problem Analysis to Program Design
13
Using C# & Visual Studio to Create
Windows based Applications
• Primitive approach
– Manually create Win based application in C#
using a text editor like Notepad, or Textpad etc
• Professional approach
– Using IDE like MS Visual Studio
– Select File Menu: New >> Project
– Select Visual C#, Windows and Windows
Forms Application from Visual Studio Installed
Templates pane, see next 3 slides
Use Visual Studio to Create
Windows-Based Applications
Select
File
New
Project
Windows
Forms
Application
template
Name
Browse
to
location
to store
your
work
Figure 9-2 Visual Studio New Windows application
C# Programming: From Problem Analysis to Program Design
15
Windows-Based Applications
Properties
Window
Design View
Toolbox
Figure 9-3 Initial design screen
C# Programming: From Problem Analysis to Program Design
16
Windows-Based Applications (continued)
Figure 9-4 Dockable windows
C# Programming: From Problem Analysis to Program Design
17
Windows Based Applications
• MS VS automatically generates code to create a
blank Windows Form object. The IDE opens the
Form Designer pane showing the form
• If you see Code Editor pane instead, you press
Shift+F7 to view Designer. F7 reveals Code Editor
• Other panes used at application design time:
Toolbox, Solution Explorer, Properties
• Other panes used at application run time: Error List
pane and Output pane
• Pushpin icon and dockable panes (auto hide state)
Windows Based Applications
• How to run Windows based application?
• Like console applications
– Select from Debug menu
• Start Debugging (shortcut F5)
• Or
• Start Without Debugging (Ctrl+F5)
Windows Based Applications
• Task: create a new project named
pureFCLForm to display a pure empty
form
• Build the solution
• Run the application
Windows Forms
• Extensive collection of Control classes
• Top-level window for an application is called a
Form
• Each control has large collection of properties and
methods
– Select property from an alphabetized list
(Properties window)
– Change property by clicking in the box and
selecting or typing the new entry
C# Programming: From Problem Analysis to Program Design
21
Windows Form Properties
Property value
Properties
Figure 9-5 Properties window
C# Programming: From Problem Analysis to Program Design
22
Windows Form Properties
(continued)
C# Programming: From Problem Analysis to Program Design
23
Windows Forms
• Task: Modify the PureFCLForm application
• Find appropriate property and type a new value
–
–
–
–
–
Change the following Form properties:
Text
BackColor
Size
FormBorderStyle
Windows Form Events
• Add code to respond to events, like button clicks
• From the Properties window, select the lightning
bolt (Events)
– Double-click on the event name to generate code
• Registers the event as being of interest
• Adds a heading for event-handler method
C# Programming: From Problem Analysis to Program Design
25
Windows Form Properties (continued)
Events
button
selected
Figure 9-6 Form1 events
C# Programming: From Problem Analysis to Program Design
26
Windows Form – Closing Event
• Code automatically added to register event
this.Closing += new System.ComponentModel.CancelEventHandler
(this.Form1_Closing);
• Code automatically added for method heading
private void Form1_Closing(object sender,
System.ComponentModel.CancelEventArgs e)
{
}
• You add statement to event-handler method body
MessageBox.Show("Hope you are having fun!");
C# Programming: From Problem Analysis to Program Design
27
Windows Forms
• Task: Modify the PureFCLForm application
• Write your user reaction (fill the body of
corresponding event handlers with C# statements) in
order to process the following events associated with
the form:
– Load form event
– Mouse entering form event
• For example, type a statement like
MessageBox.Show("Message at form loading time");
MessageBox.Show("Message at mouse entering form");
Simple Windows Application
• IDE separates the source code into three separate
files
– Form1.cs: normally this is the only one you edit
– Form1.Designer.cs: holds the auto generated code
– Program.cs: contains the Main( ) method, where
execution always begins
• Form1.cs and Form1.Designer.cs both include
partial class definitions for the Form1 class
C# Programming: From Problem Analysis to Program Design
29
Windows Form Events (continued)
Expand Form1.cs
node to reveal the
Form1.Designer.cs
file
Figure 9-7 Solution Explorer window
C# Programming: From Problem Analysis to Program Design
30
Controls
• Controls are all classes
– Button, Label, TextBox, ComboBox, MainMenu,
ListBox, CheckBox, PictureBox, MenuStrip,
RadioButton, and MonthCalendar
• Each comes with its own predefined properties
and methods
• Each fires events
• Each is derived from the
System.Windows.Forms.Control class
C# Programming: From Problem Analysis to Program Design
31
Controls (continued)
Dots
indicate
other
classes
are
derived
from the
class
Figure 9-9 Control class hierarchy
C# Programming: From Problem Analysis to Program Design
32
Standard Controls
Figure 9-10 Windows Forms controls
C# Programming: From Problem Analysis to Program Design
33
Controls (continued)
• Two procedures to place controls
– From Toolbox, double-click on control or drag and
drop
• Move, resize, and delete controls
• Format controls
– Align controls
– Make same size
– Horizontal and vertical spacing
C# Programming: From Problem Analysis to Program Design
34
Properties of the Control Class
C# Programming: From Problem Analysis to Program Design
35
Methods of the Control Class
C# Programming: From Problem Analysis to Program Design
36
Controls (continued)
Figure 9-11 GUI controls
C# Programming: From Problem Analysis to Program Design
37
Label Objects
• Provide descriptive text or labels for other controls
• Instantiate object
Label labelName = new Label( );
• Add control to Form
this.Controls.Add(labelName);
• Set property values (some from Control class)
– Text; TextAlign; Font; Location
C# Programming: From Problem Analysis to Program Design
38
Creating a TaxApp
Properties set for the Form
container
C# Programming: From Problem Analysis to Program Design
39
Creating a TaxApp Form
Add
Label
objects to
Form
object,
then
format
Figure 9-12 Formatting Label objects
C# Programming: From Problem Analysis to Program Design
40
Adding Labels to TaxApp Form
Add Label objects, then set
their properties using the
Properties window
(View Properties window)
C# Programming: From Problem Analysis to Program Design
41
TextBox Objects
• Used to enter data or display text during run time
– Used for both input and output
• Instantiate object
TextBox textBoxName = new TextBox( );
• Add control to Form
this.Controls.Add(TextBoxName);
• Interesting properties
– MultiLine, ScrollBars, MaxLength, PasswordChar,
CharacterCasing
C# Programming: From Problem Analysis to Program Design
42
TextBox Objects (continued)
C# Programming: From Problem Analysis to Program Design
43
Adding TextBox Objects to
TaxApp Form
Add TextBox objects,
then set their property
values
C# Programming: From Problem Analysis to Program Design
44
Button
• Enables user to click button to perform task
– If button has event-handler method and is registered as
an event to which your program is planning to respond,
event-handler method is called automatically when
button clicked
• Button object’s properties, methods, and events
– Inherits from Control (Table 9-2 & 9-3)
• Text, Enabled, Focused, TabIndex
C# Programming: From Problem Analysis to Program Design
45
Adding Button Objects to
TaxApp Form
Add Button objects,
then set their property
values
C# Programming: From Problem Analysis to Program Design
46
Adding Button
Objects to
TaxApp Form
(continued)
Figure 9-14 Events
C# Programming: From Problem Analysis to Program Design
47
Adding Button Objects to
TaxApp Form (continued)
•When you double-click on event, an event-handler
method is created:
private void btnCompute_Click(object sender, System.EventArgs e)
{
}
•AND registers click event:
this.btnCompute.Click +=
new System.EventHandler
(this.btnCompute_Click);
C# Programming: From Problem Analysis to Program Design
48
Adding Button Objects to
TaxApp Form (continued)
private void btnCompute_Click(object sender, System.EventArgs e)
{ string inValue;
double purchaseAmt, percent, ans;
inValue = txtPurchase.Text;
purchaseAmt = Int32.Parse(inValue);
inValue = label5.Text; //inValue previously declared as string
inValue = inValue.Remove(inValue.Length-1, 1);
percent = double.Parse(inValue) / 100;
percent =
(double.Parse(label5.Text.Remove(label5.Text.Length-1,1))) / 100;
ans = (purchaseAmt * percent) + purchaseAmt;
txtTotalDue.Text =
String.Format("{0:C}",ans).ToString();
C# Programming:
From Problem Analysis to Program Design
49
}
TaxApp Form
Figure 9-15 Tax calculator output
C# Programming: From Problem Analysis to Program Design
50
Tasks
• Windows Based Application
• Start from scratch and develop your own version
of the TAX CALCULATOR program
Tasks
• Windows Based Application
• Start from scratch and develop your own program
• Input: separate text box for each one of your
names
• Output: text box or label or both to display all
your names concatenated to one string.
Tasks
• Windows Based Application
• Start from scratch and develop your own program
• Input: separate text box to enter two numeric
values
• Output: text boxes to display result of addition,
subtraction, multiplication and division of the
input values.
Tasks
• Windows Based Application
• Start from scratch and develop your own
CURRENCY CONVERTER program
• GUI design on your choice.
Tasks
• Windows Based Application
• Start from scratch and develop your own
LINEAR EQUATION SOLVER program
• GUI design on your choice.
Coding Standards
• Guidelines for Naming Controls
– Consistency
– Use appropriate prefix for controls
C# Programming: From Problem Analysis to Program Design
56
Thank You
For
Your attention
Download