cis162ad - c# methods, menus, and dialog boxes 05_methods_menus.ppt

42
CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

Upload: nathan-stokes

Post on 26-Dec-2015

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD - C#

Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

Page 2: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 2

Overview of Topics

Top-Down Design Built-in Methods Black Box Analogy Programmer-Defined Methods Method’s Signature & Overloading Pass-by-value Arguments Menu Designer Context Menus (right-click) Common Dialog Boxes

Page 3: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 3

Top-Down Design

A design method where the major task to be accomplished is divided into subtasks. – Divide-and-Conquer– Stepwise Refinement

The goal is to write a modular program that is easier to read and maintain.

Page 4: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 4

Top-Down Design - Analogy

A design method where the major task to be accomplished is divided into subtasks. – Major Task: clean house– Subtasks: dust, vacuum, sweep, mop

Programming example.– Major Task: CS5 Sales Calculator– Subtasks:

input qty, pricecalculate sales tax, shipping, subtotal, etcdisplay total bill

Page 5: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 5

Subtasks Each subtask should perform a single well-defined task. Each subtask may produce some result. Treat them as small programs.

Input -> Process -> Output

These subtasks can be used at different times in one program or placed in a library and used by many different programs.

The int.Parse method is a complicated task that converts strings to numbres, and is used by many different programs.

Page 6: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 6

Top-Down Design Implementation

Top-Down design is implemented using methods. A method is a collection of statements that are

grouped together to perform a specific operation. Methods have inputs called arguments. Methods can be defined to return no value, but if it

does return a value, only one value can be returned through the return statement.

Methods can “return” more than one value through call-by-reference arguments (more on this later).

Page 7: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 7

Programmer-Defined Methods

Before coding some programmer-defined methods, let’s look at some built-in methods a little closer.

It will help understand what we are trying to develop if we look at how methods are used.

Page 8: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 8

Built-in Methods

They are like small programs. They have their own input – process – output. They can have one or more inputs. But methods can only return one output. As programmers, we don’t get to see the code

(process) of built-in methods. The process is like a black box…

Page 9: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 9

Black Box Analogy

Many methods are designed as black boxes. This means that as programmers we should not be

concerned how the methods performs its processing. We only need to know the inputs, outputs, and what it

does. We know what is required to use it, but we don’t

know how it does its calculations.  Develop your own methods with the Black Box

Analogy in mind.

Page 10: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 10

Convert Text to Integer – int.Parse Convert Text to Integer method is named int.Parse. The documentation for int.Parse states the value that

will be returned, method name, and the type and number of arguments. intNumber = int.Parse(String) returnedValue = MethodName (arguments)

Int.Parse takes one argument that is a String. The method is called using the following syntax:

If txtQuantity.Text contains “3” then the function call:

intNumber = int.Parse(txtQuantity.Text)

would return a value of 3 into intNumber.

Page 11: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 11

Method Call

We issue a method call when we use it. Processing control is passed to the method

until it completes its task and returns control back to the calling method.

Most methods return a value back,but only one value can be returnedthrough the return statement.

Page 12: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 12

Round Method

Methods can only return one value, but may have more than one argument.

decWholeNum = decimal.Round(decNum, 0);

The value returned is a whole number with no digits after the decimal point.

Page 13: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 13

Method’s Signature & Overloading Method overloading occurs when more than one method with the

same name is defined, but differ in the parameter list.

MessageBox.Show(TextMessage);MessageBox.Show(TextMessage, TitleBar);MessageBox.Show(TextMessage, TitleBar, ButtonType);MessageBox.Show(TextMessage, TitleBar, ButtonsType, Icon);

Each method’s signature is unique and consists of:– Method name– The number, data types, and order of its parameters– Parameters can also be modified with the keywords ref and out

(These keywords are covered in next powerpoint presentation)– The signature does NOT include the data type of the returned value

and the names used to identify the parameters.

Page 14: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 14

Small Programs

Think of each method as a small program with input, process, and output steps.

Output < Process < Input

returnedValue = MethodName (arguments)

intNumber = int.Parse(String)

Page 15: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 15

Programmer-Defined Methods

The single value that a method returns can be a string or numeric.

Two Components1. Method Definition2. Method Call

Page 16: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 16

Function Definition - Syntax

Syntax:private dataType MethodName(arguments) {

statement(s)return expression;

}

dataType is where we specify what type of value is being returned, string or numeric.

Use the return statement to return the value. Variables that will be used to store the values sent into

the method are listed in parentheses as arguments.

Page 17: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 17

Method Definition - Exampleprivate decimal calcExtendedPrice(int intQty, decimal decPrice){ decimal decExtendedPrice;

decExtendedPrice = intQty * decPrice;return decExtendedPrice;

}

decimal is the data type of the value being returned. calcExtendedPrice is the Method Name. intQty and decPrice are the arguments passed to method. The signature of this method is

calcExtendedPrice(int, decimal)

Page 18: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 18

Return Statement

Return statement returns the value back to the variable listed to the left of the equal sign on the call statement.

Return statement returns processing control back to the calling procedure.

Only one value can be returned. Variable data type of returned value must

match the return type specified in heading.

Page 19: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 19

Multiple Returns A method may be defined with multiple Return

statements. The first Return statement executed returns the value

and returns processing control back to the calling procedure.

private decimal calcExtendedPrice(int intQty, decimal decPrice{

if (intQty < 26)return intQty * decPrice;

elsereturn intQty * (decPrice * .95); //5%

discount}

Page 20: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 20

Single Return Preferred Although methods can be coded using multiple Return statements,

one Return statement is preferred. Having multiple Returns in complex procedure can be difficult to

maintain and debug.

private decimal calcExtendedPrice(int intQty, decimal decPrice ){

decimal decExtendedPrice;

if (intQty < 26) decExtendedPrice = intQty * decPrice;

else decExtendedPrice = intQty * (decPrice * .95); //5%

discount

return decExtendedPrice; }

Page 21: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 21

A Method without a Return If a method that is supposed to return a value does not

contain a return statement, then the compiler will generate a syntax error.

private decimal calcExtendedPrice(int intQty, decimal decPrice ){

decimal decExtendedPrice;

if (intQty < 26) decExtendedPrice = intQty * decPrice;

else decExtendedPrice = intQty * (decPrice * .95);

//return decExtendedPrice; //commented out – syntax error }

Page 22: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 22

Method Call

The method call is issued when the method is used in another method.

private void btnCalculate_Click(…){

intQty = int.Parse(txtQuantity.Text);decPrice = decimal.Parse(txtPrice.Text);decExtendedPrice = calcExtendedPrice(intQty,

decPrice);}

Page 23: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 23

Local Variables Variables are local to the method in which they are

defined. Variables defined in a particular method are assigned

their own memory and can only be referenced in that method.

Variables defined in calcExtendedPrice( ) are assigned their own memory and can only be referenced in calcExtendedPrice( ).

Different methods cannot see or reference each others variables.

They have separate memory allocations even though the variable names may be the same.

Page 24: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 24

Passing Argumentsprivate void btnCalculate_Click(…){

int intQty;decimal decPrice, decExtendedPrice;

intQty = int.Parse(txtQuantity.Text);decPrice = decimal.Parse(txtPrice.Text);decExtendedPrice = calcExtendedPrice(intQty, decPrice);

}

private decimal calcExtendedPrice(int intQty, decimal decPrice){

decimal decExtended;

decExtended = intQty * decPrice;return decExtended;

}

Page 25: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 25

Declare Variables

Procedure Address Variable Value

btnCalculate ( ) 1010

10201030

intQtydecPricedecExtendedPrice

0

00

calcExtendedPrice 1040

10501060

intQty

decPricedecExtended

0

00

Page 26: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 26

Input Values

Procedure Address Variable Value

btnCalculate( ) 1010

10201030

intQtydecPricedecExtendedPrice

2

35.500

calcExendedPrice 1040

10501060

intQty

decPricedecExtended

0

00

Page 27: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 27

decExtendedPrice = calcExtendedPrice(intQty, decPrice);

Pass-by-Value - Values in variables of btnCalculate are sent to variables of calcExtendedPrice.

Procedure Address Variable Value

btnCalculate( ) 1010

10201030

intQtydecPricedecExtendedPrice

2

35.500

calcExtendedPrice 1040

10501060

intQty

decPricedecExtended

2

35.500

Page 28: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 28

Methods Use Local Variablesprivate void btnCalculate_Click(…){

int intQty;decimal decPrice, decExtendedPrice;

intQty = int.Parse(txtQuantity.Text);decPrice = decimal.Parse(txtPrice.Text);decExtendedPrice = calcExtendedPrice(intQty, decPrice);

}

private decimal calcExtendedPrice(int intQty, decimal decPrice){

decimal decExtended;

decExtended = intQty * decPrice;return decExtended;

}

Page 29: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 29

decExtended = intQty * decPrice;

Procedure Address Variable Value

btnCalculate( ) 1010

10201030

intQtydecPricedecExtendedPrice

2

35.500

calcExtendedPrice 1040

10501060

intQty

decPricedecExtended

2

35.5071.00

Page 30: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 30

Returning Method Values

private void btnCalculate_Click(…){

int intQty;decimal decPrice, decExtendedPrice;

intQty = int.Parse(txtQuantity.Text);decPrice = decimal.Parse(txtPrice.Text);decExtendedPrice = calcExtendedPrice(intQty, decPrice);

}

private decimal calcExtendedPrice(int intQty, decimal decPrice){

decimal decExtended;

decExtended = intQty * decPrice;return decExtended;

}

Page 31: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 31

decExtendedPrice = calcExtendedPrice(intQty, decPrice)

Return statements sends the value to variable on the left side of the equal sign on the method call statement.

Procedure Address Variable ValuebtnCalculate( ) 1010

10201030

intQtydecPricedecExtendedPrice

2

35.5071.00

calcExtendedPrice 1040

10501060

intQty

decPricedecExtended

2

35.5071.00

Page 32: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 32

Menu Designer Plan menu options / paths. Add MenuStrip control to component tray.

Just like the ToolTip. Enter Text for menu item in box labeled Type Here. Use ampersands to define control keys. Name menu items using menu path and mnu prefix. Need to know name so we can tell which menu item was

selected in the code.

private void mnuFileExit_Click(object sender, System.EventArgs e){

this.Close();}

Page 33: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 33

Menu Designer Example

Page 34: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 34

Context Menus

Context menus are shortcut menus that pop up with a right-click.

Add a ContextMenuStrip control to the component tray. Use the Menu Designer to add items. More than one context menu can be added. In order to make the context menu available to users, it

must be assigned to the form or control by using the ContextMenuStrip property.

See the images on the next two slides…

Page 35: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 35

Context Menu Example

Page 36: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 36

Assign Context Menu to Form

Page 37: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 37

Common Dialog Boxes

Common dialog boxes available:– FontDialog– ColorDialog– OpenFileDialog– SaveFileDialog– PrintDialog– PrintPreviewDialog

Page 38: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 38

Common Dialog Boxes The Common Dialog Box controls can save programmers the

time and trouble of designing custom dialog boxes for common purposes.

Add a common dialog box control to the component tray. The default Name of the Dialog maybe used, unless more than

one is being used in the program..colorDialog1, fontDialog, etc.

You won’t see anything in design time, because the dialog box is displayed at run-time with code.

Use the ShowDialog method to display a dialog box.

fontDialog1.ShowDialog( );colorDialog1.ShowDialog( );

Page 39: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 39

FontDialog Box

Page 40: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 40

Using Selected Options Dialog Boxes are objects themselves with properties. The values selected by users in a font or color dialog box are

stored in the dialog box’s properties. The values in the dialog boxes selected by users

need to be applied to controls on the form.

lblGrandTotal.Font = fontDialog1.Font;lblGrandTotalForeColor = colorDialog1.Color;

Note: property on Labels and Textboxes is ForeColor.

Before showing a dialog box, you should assign to it the current value selected just incase users click on Cancel.

fontDialog1.Font = lblGrandTotal.Font;

Page 41: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 41

Method Exampleprivate void mnuEditFont_Click(object sender, System.EventArgs e)

{//Initialize the font in the dialog box to the current fontfontDialog1.Font = lblGrandTotal.Font;

//Display dialog box so user can pick a fontfontDialog1.ShowDialog();

//Apply the font chosen to the Totals sectionlblGrandTotal.Font = fontDialog1.Font;lblNumberOfOrders.Font = fontDialog1.Font;lblAverageOrder.Font = fontDialog1.Font;

}

Page 42: CIS162AD - C# Methods, Menus, and Dialog Boxes 05_methods_menus.ppt

CIS162AD 42

Summary

Top-Down Design Built-in Methods Black Box Analogy Programmer-Defined Methods Method’s Signature & Overloading Menu Designer Context Menus Common Dialog Boxes