1 of 53

Windows Programming Using C#

Forms Programming I

2 of 53

Contents

  • System.Drawing Namespace
  • System.Windows.Forms Namespace
    • Creating forms applications by hand
    • Creating forms applications using Visual Studio designer

2

3 of 53

Forms Programming

  • Forms programming allows you to create stand-alone Windows GUI applications
  • The API has been modernized for .NET
  • It now supports a modern delegate-based programming model
  • Forms programming uses
    • System.Drawing
      • Basic GDI+ functionality
    • System.Windows.Forms
      • Higher-level controls

3

4 of 53

System.Drawing

  • This namespace provides many graphic data structures which are used throughout the GUI programming model
  • It also provides support for low-level drawing operations
  • These can be used to draw anything, not just what is offered by the pre-built controls

4

5 of 53

System.Drawing.Point

  • Structure which represents a 2-D point
  • Constructor
    • Point(int x, int y)
  • Properties
    • X – get/set of X coordinate
    • Y – get/set of Y coordinate

5

6 of 53

System.Drawing.Size

  • Structure which stores the width and height of something
  • Constructor
    • Size(int width, int height)
  • Properties
    • Width – get/set width
    • Height – get/set height

6

7 of 53

System.Drawing.Rectangle

  • Structure representing a rectangle as the point of the top-left-corner, width and height
  • Constructor
    • Rectangle(Point tlc, Size sz)
    • Rectangle(int tlx, int tly, int wd, int ht)
  • Properties
    • X – get/set top left X coordinate
    • Y – get/set top left Y coordinate
    • Height – get/set height
    • Width – get/set width
    • Bottom – get Y coordinate of rectangle bottom
    • Top – get Y coordinate of rectangle top
    • Left – get X coordinate of right of rectangle
    • Right – get X coordinate of left of rectangle

7

8 of 53

System.Drawing.Color

  • Structure representing an alpha-RGB color
  • Methods
    • Color FromARGB(int r, int g, int b)
    • Color FromARGB(int alpha, int r, int g, int b)
  • Properties
    • A – get alpha value
    • R – get red value
    • G – get green value
    • B – get blue value
    • Black, White, Red, Green, Yellow, Cyan, Coral, Blue, etc. – get values of pre-defined colors

8

9 of 53

System.Drawing.Font

  • Class representing a font, size and style
  • Constructor
    • Font(string family, int points, FontStyle style)
  • Properties
    • FontFamily – get the FontFamily value
    • Style – get the FontStyle Value
    • Size – get the font size
    • Bold – get true if bold
    • Italic – get true if italic

9

10 of 53

System.Drawing.FontStyle

  • An enumeration with members
    • Bold, Italic, Regular, Strikeout, Underline
  • The values can be ORed together to indicate that more than one style should apply at once

10

11 of 53

System.Windows.Forms

  • This namespace contains all of the controls used on the average Windows interface
  • A control is a higher-level object composed of
    • A window in which the control is drawn
    • Visual parts of the control which are drawn in the window
    • A set of delegates which are triggered when various events occur

11

12 of 53

Form Class

  • This is the top-level window class
  • This class contains all other controls
  • Normally, your top-level form inherits from the Form class
  • Although the class has numerous methods, most of the time you interact with it via properties and delegates

12

13 of 53

Form Properties

13

A collection of controls owned by the form

Controls

Whether maximized, minimized or normal

WindowState

Size when initially created

DefaultSize

Maximum size window can be resized to

MaximumSize

Minimum size window can be resized to

MinimumSize

Size of drawing area without borders or scrollbars

ClientSize

Foreground or drawing color

ForeColor

Background color

BackColor

DPI resolution of display it was built for. Will be scaled to look correct on other displays.

AutoScaleDimensions

Text displayed or caption

Text

Size of form in pixels

Size

Point of to left corner

Location

Description

Property

14 of 53

Form Events

  • Forms provide support for a large number of events
  • You add one or more delegates to these events
  • When the event happens, the delegates are invoked
  • The delegates must have the signature of an event handler

void EventHandler(object sender, EventArgs e)

14

15 of 53

Form Events

15

Resize operation has ended

ResizeEnd

Resize operation has begun

ResizeBegin

Occurs when a form is first displayed

Shown

When the form is actually closed

Closed

Just before the form is closed

Closing

Just before form is loaded the first time

Load

Description

Event

16 of 53

Form Methods

16

Moves to top of stacking order

BringToFront

Makes the form visible

Show

Makes the form invisible

Hide

Gives the form focus

Focus

Closes the form

Close

Activates the window and gives it focus

Activate

Description

Method

17 of 53

Creating Windows Applications

  • We will demonstrate how to build a simple GUI interface using a text editor
  • Most of the time, the designer in Visual Studio will be used
  • Doing it by hand
    • Shows how it works under the hood
    • Let’s you make modifications by hand
    • Provides an understanding so you can create your own controls

17

18 of 53

Creating Windows Applications

  • In creating a GUI application we will use
    • Application – a class with static methods to control operation of an application
    • Label – a widget that can display static text or an image
    • Button – a push button with a textual or image displayed. Able to respond to mouse clicks.

18

19 of 53

Creating Windows Applications

  • The first step is to create a class which
    • Inherits from Form
    • Declares the widgets within it

public class GreetingForm : Form {

Label greetingLabel;

Button cancelButton;

}

19

20 of 53

Creating Windows Applications

  • Next, create the label and set its properties

greetingLabel = new Label();

greetingLabel.Location = new Point(16, 24);

greetingLabel.Text = "Hello, World";

greetingLabel.Size = new Size(216, 24);

greetingLabel.ForeColor = Color.Black;

20

21 of 53

Creating Windows Applications

  • Create the cancel button and set its properties

cancelButton = new Button();

cancelButton.Location = new Point(150, 200);

cancelButton.Size = new Size(112, 32);

cancelButton.Text = "&Cancel";

cancelButton.Click += new EventHandler(cancelButton_Click);

21

22 of 53

Creating Windows Applications

  • Set the properties of the main form

this.AutoScaleDimensions = new SizeF(95.0f, 95.0f);

this.ClientSize = new Size(300, 300);

this.Text = "Hello, World";

22

23 of 53

Creating Windows Applications

  • Add the controls to the form

this.Controls.Add(cancelButton);

this.Controls.Add(greetingLabel);

  • And provide the event handler

protected void cancelButton_Click(

object sender, EventArgs e) {

Application.Exit();

}

  • * see HelloForm

23

24 of 53

Visual Studio Designer

  • This is a drag and drop interface for drawing a GUI
  • The code is automatically generated
  • You can hook event handlers onto the events and write the code for them
  • It speeds writing code
  • You cannot make major modifications to the code it generates

24

25 of 53

CheckBoxes

  • Labeled boxes which can be checked or unchecked
    • Checked – get/set Boolean to determine if box is checked
    • CheckedChanged – delegate called when the box is checked or unchecked
  • * see ListBoxDemo

25

26 of 53

GroupBox

  • Displays a border around a group of controls
  • Can have optional label controlled by Text property
  • Controls can be added by
    • Placing them within the group box in the designer
    • Adding to the Controls list programmatically
  • * see TextBoxDemo

26

27 of 53

Panels

  • A panel is like a group box but does not have a text label
  • It contains a group of controls just like group box
    • BorderStyle – get/set border style as
      • BorderStyle.Fixed3D
      • BorderStyle.FixedSingle
      • BorderStyle.None

27

28 of 53

Radio Buttons

  • Radio buttons are similar to checkboxes, but
    • Appear slightly different
    • Allow buttons to be grouped so that only one can be checked at a time
  • A group is formed when the radio buttons are in the same container – usually a group box or panel

28

29 of 53

Radio Buttons

    • Checked – get/set Boolean indicating if the button is checked
    • CheckedChanged – delegate invoked when the button is checked or unchecked

    • * see TextBoxDemo

29

30 of 53

TextBox

  • This is a single line or multi-line text editor
    • Multiline – get/set Boolean to make multiline
    • AcceptsReturn – in a multiline box, if true then pressing Return will create a new line. If false then the button referenced by the AcceptButton property of the form, will be clicked.
    • PasswordChar – if this is set to a char, then the box becomes a password box

30

31 of 53

TextBox

    • ReadOnly – if true, the control is grayed out and will not accept user input
    • ScrollBars – determines which scrollbars will be used: ScrollBars.None, Vertical, Horizontal, Both
    • TextAlign – get/set HorizontalAlignment.Left, Center, or Right
    • TextChanged – event raised when the text is changed

31

32 of 53

File Dialog

  • The file dialog allows you to navigate through directories and load or save files
  • This is an abstract class and you use
    • OpenFileDialog
    • SaveFileDialog
  • You should create the dialog once and reuse it so that it will remember the last directory the user had navigated to

32

33 of 53

File Dialog

  • InitialDirectory – string representing the directory to start in
  • Filter – a string indicating the different types of files to be displayed
    • A set of pairs of display name and pattern separated by vertical bars
      • Windows Bitmap|*.bmp|JPEG|*.jpg|GIF|*.gif
  • FilterIndex – the filter to use as an origin 1 index

33

34 of 53

File Dialog

  • FileName – the name of the file selected
  • ShowDialog – a method to show the dialog and block until cancel or OK is clicked

if (openDialog.ShowDialog() == DialogResult.OK) {

Image img = Image.FromFile(openDialog.FileName);

pictureBox1.Image = img;

}

  • * see ImageViewer

34

35 of 53

Image Class

  • An abstract class that can store an image
  • Several concrete classes are used for image types such as BMP, GIF, or JPG
    • FromFile(string fname) – loads any supported image format from a file
    • FromStream(stream) – loads an image from a stream
    • Height – image height
    • Width – image width
  • *see ImageViewer

35

36 of 53

PictureBox Class

  • This displays an image
    • Image – assigned an Image object to display
    • SizeMode – determines what to do if the image does not fit into the window
      • Normal
      • StretchImage
      • AutoSize
      • CenterImage
      • Zoom
  • * see ImageViewer

36

37 of 53

ToolTips

  • These are the small pop-up boxes which explain the purpose of a control
  • To use
    • Create a new tooltip in the designer
    • Drop the tooltip onto the form
    • The tooltip will appear on a tray below the form
  • * see ImageViewer

37

38 of 53

ToolTips

38

39 of 53

ToolTips

  • After the tooltip appears in the tray, a new tooltip property appears for every component
  • This can be assigned different text for each component
  • That text will be displayed when the mouse hovers over that component

39

40 of 53

NumericUpDown

  • This allows the selection of an integer from a limited range
  • Also called a spinner
    • Minimum – smallest selectable value
    • Maximum – largest selectable value
    • Increment – size of increment per click
    • Value – the selected value
    • ValueChanged – event raised when the value changes
  • * see DateSelector

40

41 of 53

MonthCalendar

  • A control which displays a calendar for the selection of a range of dates
    • MinDate – the first selectable date
    • MaxDate – the last selectable date
    • SelectionStart – DateTime of start of selection
    • SelectionEnd – DateTime of end of selection
    • DateChanged – event raised when date is changed
  • * see DateSelector

41

42 of 53

DateTimePicker

  • Similar to a month calendar but
    • Calendar pulls down and selection displayed
    • More configurable
    • Selects a single value, not a range
  • Properties/methods
    • Format – Long, Short, Time, Custom
    • Value – DateTime value selected
    • ValueChanged – event which fires when date or time changes
  • * see DateSelector

42

43 of 53

System.DateTime Structure

  • A structure representing a date and time
  • Constructors
    • DateTime(int d, int m, int y)
    • DateTime(int d, int m, int y, int h, int m, int s)
  • Properties
    • Now – returns a DateTime object set to the current local time

43

44 of 53

DateTime

  • Day – day from 1-31
  • Month – month from 1-12
  • Year – tear from 1-9999
  • Hour – from 0-23
  • Minute – minute from 0 -59
  • Second – second from 0 -59
  • Millisecond – millisecond from 0-999

44

45 of 53

DateTime

    • DayOfWeek – get enumeration of Sunday, Monday,…
    • DayOfYear – day of year from 1 – 366
  • Methods
    • DateTime AddYears(double value)
    • DateTime AddMonths(double value)
    • DateTime AddDays(double value)
    • DateTime AddHours(double value)
    • DateTime AddSeconds(double value)
    • DateTime AddMilliseconds(double value)

45

46 of 53

DateTime

    • TimeSpan Subtract(DateTime)
    • int CompareTo(DateTime)
    • static DateTime Parse(string)
    • ToLongDateString()
    • ToShortDateString()
    • ToLongTimeString()
    • ToShortTimeString()

46

47 of 53

ListBox

  • The ListBox presents a list of items which can be selected
  • A scrollbar is displayed if needed
    • MultiColumn – displays list as multiple columns
    • SelectedIndex – index of selected item
    • SelectedIndices – collection of selected indices
    • SelectedItem – the selected item

47

48 of 53

ListBox

    • SelectedItems – collection of selected items
    • SelectionMode – how items can be selected
      • None – no selection
      • One – single selection
      • MultiSimple – each click selects additional item
      • MultiExtended – uses shift and control keys
    • Sorted – if true the items will be sorted alphabetically

48

49 of 53

ListBox

    • Items – a collection of items in the list box
    • ClearSelected – method to clear selection
    • GetSelected – returns true if the parameter passed is selected
    • SelectedIndexChanged – event when selection changes
  • * see ListBoxDemo

49

50 of 53

Populating a ListBox

  • Any object can be placed into a ListBox
  • The display is generated by ToString()

for(int i = 0; i < 50; i++) {

listBox1.Items.Add(

"Item " + i.ToString());

}

50

51 of 53

ComboBox

  • A combo box is like a list but lets you displays a selected value.
  • The list pulls down when a selection is being made.
  • Options allow the selected text to be editable or to require it to be selected from the drop-down list

51

52 of 53

ComboBox

  • DropDownStyle
    • Simple – text is editable & list always visible
    • DropDown – default indicating text is editable & user must click to see list
    • DropDownList – value is not editable & user must click to see list
  • Items – the collection of items in the list

52

53 of 53

ComboBox

  • MaxDropDownItems – max number of items in pulldown before scrollbar used
  • SelectedIndex – index of selection
  • SelectedItem – selected item
  • Sorted – whether entries are sorted
  • SelectedIndexChanged – event raised when selection changes

53