©2002 Prentice Hall. All rights reserved.
Chapter 13 – Graphical User Interfaces Part 2
Outline
13.1 Introduction 13.2 Menus 13.3 LinkLabels
13.4 ListBoxes and CheckedListBoxes 13.4.1 ListBoxes
13.4.2 CheckedListBoxes 13.5 ComboBoxes
13.6 TreeViews 13.7 ListViews 13.8 Tab Control
13.9 Multiple Document Interface (MDI) Windows 13.10 Visual Inheritance
13.11 User-Defined Controls
©2002 Prentice Hall. All rights reserved.
2
13.1 Introduction
• Continues study of Graphical User Interface
• Explores:
– Menus
– LinkLabels – ListBox
– CheckedListBox – ComboBoxes – TreeView control – Tab controls
– Multiple-document interface windows
©2002 Prentice Hall. All rights reserved.
3
13.2 Menus
• Group related commands together
• Contain:
– Commands – Submenus
• Exit uses Application class to quit
• Color options mutually exclusive
• Every option has its own event handler
• Font style options use Xor operator
©2002 Prentice Hall. All rights reserved.
4
13.2 Menus
Fig. 13.1 Expanded and checked menus.
Shortcut key
Disabled command
Separator bar Menu
submenu
Checked menu item
©2002 Prentice Hall. All rights reserved.
13.2 Menus
Fig. 13.2 Visual Studio .NET Menu Designer.
Text boxes used to add items to menu
MainMenuicon Menu Designer Place & character before the letter to be underlined
©2002 Prentice Hall. All rights reserved.
6
13.2 Menus
MainMenu a nd MenuItem e ve nts a nd p ro p e rtie s
De sc rip tion / De le g a te a nd Eve nt Arg um e nts
MainMenu Properties
MenuItems Collection of MenuItems for the MainMenu.
RightToLeft Used to display text from right to left. Useful for languages that are read from right to left.
MenuItem Properties
Checked Whether menu item appears checked (according to property RadioCheck). Default false, meaning that the menu item is not checked.
Index Item’s position in parent menu.
MenuItems Collection of submenu items for this menu item.
©2002 Prentice Hall. All rights reserved.
7
13.2 Menus
MergeOrder This property sets the position of menu item when parent menu merged with another menu.
MergeType This property takes a value of the MenuMerge enumeration. Specifies how parent menu merges with another menu. Possible values are Add, MergeItems, Remove and Replace.
RadioCheck If true, menu item appears as radio button (black circle) when checked; if false, menu item displays checkmark. Default false.
Shortcut Shortcut key for the menu item (i.e. Ctrl + F9 can be equivalent to clicking a specific item).
ShowShortcut If true, shortcut key shown beside menu item text. Default true.
Text Text to appear on menu item. To make an Alt access shortcut, precede a character with & (i.e. &File for File).
Common Events (Delegate EventHandler, event arguments EventArgs) Click Raised when item is clicked or shortcut key is used. Default when
double-clicked in designer.
Fig. 13.3 MainMenu a nd MenuItem p rop erties a nd e ve nts.
©2002 Prentice Hall.
All rights reserved.
Outline
8MenuTest.cs
1 // Fig 13.4: MenuTest.cs2 // Using menus to change font colors and 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;
10
11 public class MenuTest : System.Windows.Forms.Form 12 {
13 // display label
14 privateSystem.Windows.Forms.Label displayLabel;
15
16 // main menu (contains file and format menu) 17 privateSystem.Windows.Forms.MainMenu mainMenu;
18
19 // file menu
20 privateSystem.Windows.Forms.MenuItem fileMenuItem;
21 privateSystem.Windows.Forms.MenuItem aboutMenuItem;
22 privateSystem.Windows.Forms.MenuItem exitMenuItem;
23
24 // format menu
25 privateSystem.Windows.Forms.MenuItem formatMenuItem;
26
27 // color submenu
28 privateSystem.Windows.Forms.MenuItem colorMenuItem;
29 privateSystem.Windows.Forms.MenuItem blackMenuItem;
30 privateSystem.Windows.Forms.MenuItem blueMenuItem;
31 privateSystem.Windows.Forms.MenuItem redMenuItem;
32 privateSystem.Windows.Forms.MenuItem greenMenuItem;
33
About command Exit command
Color options
©2002 Prentice Hall.
All rights reserved.
Outline
MenuTest.cs
34 // font submenu35 privateSystem.Windows.Forms.MenuItem timesMenuItem;
36 privateSystem.Windows.Forms.MenuItem courierMenuItem;
37 privateSystem.Windows.Forms.MenuItem comicMenuItem;
38 privateSystem.Windows.Forms.MenuItem boldMenuItem;
39 privateSystem.Windows.Forms.MenuItem italicMenuItem;
40 privateSystem.Windows.Forms.MenuItem fontMenuItem;
41
42 privateSystem.Windows.Forms.MenuItem separatorMenuItem;
43
44 [STAThread]
45 static voidMain() 46 {
47 Application.Run( new MenuTest() );
48 } 49
50 // display MessageBox
51 private voidaboutMenuItem_Click(
52 objectsender, System.EventArgs e ) 53 {
54 MessageBox.Show(
55 "This is an example\nof using menus.", 56 "About", MessageBoxButtons.OK, 57 MessageBoxIcon.Information);
58 } 59
60 // exit program
61 private voidexitMenuItem_Click(
62 objectsender, System.EventArgs e ) 63 {
64 Application.Exit();
65 } 66
Font options Style options
About event handler
Exit event Handler
©2002 Prentice Hall.
All rights reserved.
Outline
10MenuTest.cs
67 // reset color68 private void ClearColor() 69 {
70 // clear all checkmarks 71 blackMenuItem.Checked = false;
72 blueMenuItem.Checked = false;
73 redMenuItem.Checked = false;
74 greenMenuItem.Checked = false;
75 } 76
77 // update menu state and color display black 78 private void blackMenuItem_Click(
79 objectsender, System.EventArgs e ) 80 {
81 // reset checkmarks for color menu items 82 ClearColor();
83
84 // set color to black
85 displayLabel.ForeColor = Color.Black;
86 blackMenuItem.Checked = true;
87 } 88
89 // update menu state and color display blue 90 private void blueMenuItem_Click(
91 objectsender, System.EventArgs e ) 92 {
93 // reset checkmarks for color menu items 94 ClearColor();
95
96 // set color to blue
97 displayLabel.ForeColor = Color.Blue;
98 blueMenuItem.Checked = true;
99 } 100
Black event handler
Blue event
Handler
©2002 Prentice Hall.
All rights reserved.
Outline
11MenuTest.cs
101 // update menu state and color display red102 private voidredMenuItem_Click(
103 objectsender, System.EventArgs e ) 104 {
105 // reset checkmarks for color menu items 106 ClearColor();
107
108 // set color to red
109 displayLabel.ForeColor = Color.Red;
110 redMenuItem.Checked = true;
111 } 112
113 // update menu state and color display green 114 private voidgreenMenuItem_Click(
115 objectsender, System.EventArgs e ) 116 {
117 // reset checkmarks for color menu items 118 ClearColor();
119
120 // set color to green
121 displayLabel.ForeColor = Color.Green;
122 greenMenuItem.Checked = true;
123 } 124
125 // reset font types 126 private voidClearFont() 127 {
128 // clear all checkmarks 129 timesMenuItem.Checked = false;
130 courierMenuItem.Checked = false;
131 comicMenuItem.Checked = false;
132 } 133
Red event handler
Green event handler
©2002 Prentice Hall.
All rights reserved.
Outline
12MenuTest.cs
134 // update menu state and set font to Times135 private voidtimesMenuItem_Click(
136 objectsender, System.EventArgs e ) 137 {
138 // reset checkmarks for font menu items 139 ClearFont();
140
141 // set Times New Roman font 142 timesMenuItem.Checked = true;
143 displayLabel.Font = newFont(
144 "Times New Roman", 14, displayLabel.Font.Style );
145 } 146
147 // update menu state and set font to Courier 148 private voidcourierMenuItem_Click(
149 objectsender, System.EventArgs e ) 150 {
151 // reset checkmarks for font menu items 152 ClearFont();
153
154 // set Courier font
155 courierMenuItem.Checked = true;
156 displayLabel.Font = newFont(
157 "Courier New", 14, displayLabel.Font.Style);
158 } 159
160 // update menu state and set font to Comic Sans MS 161 private voidcomicMenuItem_Click(
162 objectsender, System.EventArgs e ) 163 {
164 // reset checkmarks for font menu items 165 ClearFont();
166
Times New Roman event handler
Courier New event handler
Comic Sans
event handler
©2002 Prentice Hall.
All rights reserved.
Outline
MenuTest.cs
167 // set Comic Sans font168 comicMenuItem.Checked = true;
169 displayLabel.Font = newFont(
170 "Comic Sans MS", 14, displayLabel.Font.Style );
171 } 172
173 // toggle checkmark and toggle bold style 174 private voidboldMenuItem_Click(
175 objectsender, System.EventArgs e ) 176 {
177 // toggle checkmark
178 boldMenuItem.Checked = !boldMenuItem.Checked;
179
180 // use Xor to toggle bold, keep all other styles 181 displayLabel.Font = newFont(
182 displayLabel.Font.FontFamily, 14,
183 displayLabel.Font.Style ^ FontStyle.Bold);
184 } 185
186 // toggle checkmark and toggle italic style 187 private voiditalicMenuItem_Click(
188 objectsender, System.EventArgs e) 189 {
190 // toggle checkmark
191 italicMenuItem.Checked = !italicMenuItem.Checked;
192
193 // use Xor to toggle bold, keep all other styles 194 displayLabel.Font = newFont(
195 displayLabel.Font.FontFamily, 14,
196 displayLabel.Font.Style ^ FontStyle.Italic);
197 } 198
199 } // end class MenuTest
Bold event handler
Italic event handler
©2002 Prentice Hall.
All rights reserved.
Outline
14MenuTest.cs
Program Output
©2002 Prentice Hall. All rights reserved.
15
13.3 LinkLabels
• Displays links to other objects
– Uses event handlers to link to right file or program – Start method of Process class opens other programs
• Derived from class Label, inherits functionality
©2002 Prentice Hall. All rights reserved.
16
13.3 LinkLabels
Fig. 13.5 LinkLabel control in the design phase and in running program.
LinkLabel on a form
Hand image displayed when mouse cursor over a LinkLabel
©2002 Prentice Hall. All rights reserved.
13.3 LinkLabels
L i n k L a b e l p ro p e rt ie s a n d e v e n t s
D e sc rip t io n / D e le g a t e a n d Ev e n t A rg u m e n t s C o m m on Prop erties
A c t i v e L i n k C o l o r S p ecifies the co lo r o f the active link w he n clicke d. D efault is red . L i n k A r e a S p ecifies w hic h p ortio n o f text in the L i n k L a b e l is treated as p art o f
the lin k.
L i n k B e h a v i o r S p ecifies the link’s be hav io r, such as how the link ap pea rs w hen the m o use is p la ced o ver it.
L i n k C o l o r S p ecifies the origina l c olo r of a ll link s befo re they ha ve b een v is ited . D efa u lt is b lue.
L i n k s L ists the L i n k L a b e l . L i n k objec ts, w hic h a re the links co nta ined in the L i n k L a b e l .
L i n k V i s i t e d If T r u e , link app ears as if it w ere visited (its c olor is c ha n ged to that spec ified by pro perty V i s i t e d L i nk C o l o r ). D efau lt F a l s e . T e x t S p ecifies the text to app ear on the contro l.
U s e M n e m o n i c If T r u e , & cha racter in T e x t p rope rty acts as a sho rtc ut (s im ilar to the A lt sho rtc ut in m e nus).
V i s i t e d L i n k C o l o r S p ecifies the co lo r o f v is ite d links. D efa ult is C o l o r . P u r p l e . C o m m on E ven t (D elega te L i n k L a b e l L i n k Cl i c k e d E v e n t H a n d l e r , even t
a rg u m e n ts L i n k L a b el L i n k C l i c k e d Ev e n t A r gs ) L i n k C l i c k e d G ene rated w he n link is c lic ked . D efa ult w h en co ntro l is d oub le-
clic ked in d esigner.
©2002 Prentice Hall.
All rights reserved.
Outline
18LinkLabelTest.cs
1 // Fig. 13.7: LinkLabelTest.cs2 // Using LinkLabels to create hyperlinks.
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
11 public class LinkLabelTest : System.Windows.Forms.Form 12 {
13 // linklabels to C: drive, www.deitel.com and Notepad 14 privateSystem.Windows.Forms.LinkLabel driveLinkLabel;
15 privateSystem.Windows.Forms.LinkLabel deitelLinkLabel;
16 privateSystem.Windows.Forms.LinkLabel notepadLinkLabel;
17
18 [STAThread]
19 static voidMain() 20 {
21 Application.Run( new LinkLabelTest() );
22 } 23
24 // browse C:\ drive
25 private voiddriveLinkLabel_LinkClicked( objectsender, 26 System.Windows.Forms.LinkLabelLinkClickedEventArgs e ) 27 {
28 driveLinkLabel.LinkVisited = true;
29 System.Diagnostics.Process.Start( "C:\\");
30 } 31
C drive link Notepad link
Deitel website link
C drive event handler
Start method to open
other programs
©2002 Prentice Hall.
All rights reserved.
Outline
19LinkLabelTest.cs
32 // load www.deitel.com in Web broswer33 private voiddeitelLinkLabel_LinkClicked( objectsender, 34 System.Windows.Forms.LinkLabelLinkClickedEventArgs e ) 35 {
36 deitelLinkLabel.LinkVisited = true;
37 System.Diagnostics.Process.Start(
38 "IExplore", "http://www.deitel.com");
39 } 40
41 // run application Notepad
42 private voidnotepadLinkLabel_LinkClicked(
43 objectsender,
44 System.Windows.Forms.LinkLabelLinkClickedEventArgs e ) 45 {
46 notepadLinkLabel.LinkVisited = true;
47
48 // program called as if in run 49 // menu and full path not needed
50 System.Diagnostics.Process.Start( "notepad");
51 } 52
53 } // end class LinkLabelTest
Deitel website event handler
Notepad event handler
©2002 Prentice Hall.
All rights reserved.
Outline
20LinkLabelTest.cs Program Output
Click on first LinkLabelto look at contents of C drive
©2002 Prentice Hall.
All rights reserved.
Outline
LinkLabelTest.cs Program Output
Click on second LinkLabelto go to the Web Site
©2002 Prentice Hall.
All rights reserved.
Outline
22LinkLabelTest.cs Program Output
Click the third LinkLabelto open notepad
©2002 Prentice Hall. All rights reserved.
23
13.4 ListBoxes and CheckedListBoxes
• ListBoxe s
– Allow users to view and select from items on a list – Static objects
– SelectionMode property determines number of items that can be selected
– Property Items returns all objects in list
– Property SelectedItem returns current selected item – Property SelectedIndex returns index of selected item – Property GetSelected returns true if property at given
index is selected
– Use Add method to add to Items collection
• myListBox.Items.Add(“myListItem”)
©2002 Prentice Hall. All rights reserved.
24
13.4 ListBoxes and CheckedListBoxes
• CheckedListBoxe s
– Extends ListBox by placing check boxes next to items
– Can select more than one object at one time
©2002 Prentice Hall. All rights reserved.
13.4.1 ListBoxes
• Class ListBoxTest
– Allows users to add and remove items from ListBox – Uses event handlers to add to, remove from and clear list
©2002 Prentice Hall. All rights reserved.
26
13.4.2 CheckedListBoxes
• CheckedListBox derives from class ListBox
– Can add to, remove from or clear list – Can select multiple items from the list
– Properties CurrentValue and NewValue return state of object selected
– Properties CheckedItems and CheckedIndices
return the objects and indices of selected items respectively
©2002 Prentice Hall. All rights reserved.
27
13.4 ListBoxes and CheckListBoxes
Fig. 13.8 ListBox and CheckedListBox on a form.
ListBox
Selected Items
Checked item
CheckedListBox
Scroll bars appear if necessary
©2002 Prentice Hall. All rights reserved.
28
13.4 ListBoxes and CheckListBoxes
L i s t B o x p ro p e rt ie s, m e t h o d s a n d e v e n t s
D e sc rip t io n / D e le g a t e a n d Ev e n t A rg u m e n t s C o m m o n P r o p e r tie s
I t e m s L is ts th e c o lle c tio n o f ite m s w it h in t h e L i s t B o x .
M u l t i C o l u m n In d ic a te s w h e t h e r th e L i s t B o x c a n b re a k a lis t in to m u lt ip le c o lu m n s . M u lt ip le c o lu m n s a re u s e d to m a k e v e rt ic a l s c ro ll b a rs u n n e c e s s a ry .
S e l e c t e d I n d e x R e tu r n s th e in d e x o f t h e c u rre n t ly s e le c te d ite m . I f th e u s e r s e le c ts m u lt ip le ite m s , th is m e t h o d a rb itra r ily re t u r n s o n e o f th e s e le c te d in d ic e s ; if n o ite m s h a v e b e e n s e le c te d , th e m e t h o d re t u r n s - 1 . S e l e c t e d I n d i c e s R e tu r n s a c o lle c t io n o f th e in d ic e s o f a ll c u r re n t ly s e le c te d ite m s . S e l e c t e d I t e m R e tu r n s a re fe re n c e to th e c u r re n t ly s e le c te d ite m ( if m u lt ip le ite m s a re
s e le c te d , it re tu r n s th e ite m w it h t h e lo w e s t in d e x n u m b e r).
S e l e c t e d I t e m s R e tu r n s a c o lle c t io n o f th e c u rre n t ly s e le c te d ite m (s ).
S e l e c t i o n M o d e D e te r m in e s th e n u m b e r o f ite m s t h a t c a n b e s e le c te d a n d th e m e a n s th ro u g h w h ic h m u lt ip le ite m s c a n b e s e le c te d . V a lu e s N o n e , O n e , M u l t i S i m p l e ( m u lt ip le s e le c t io n a llo w e d ) a n d M u l t i E x t e n d e d ( m u lt ip le s e le c tio n a llo w e d v ia a c o m b in a t i o n o f a rro w k e y s , m o u s e c lic k s a n d S h ift a n d C o n tr o l b u tto n s ).
S o r t e d In d ic a te s w h e t h e r ite m s a p p e a r in a lp h a b e t ic a l o rd e r. T r u e c a u s e s a lp h a b e t iz a tio n ; d e fa u lt is F a l s e .
C o m m o n M e th o d
G e t S e l e c t e d T a k e s a n in d e x , a n d re t u r n s T r u e if t h e c o rre s p o n d in g ite m is s e le c te d .
©2002 Prentice Hall. All rights reserved.
13.4 ListBoxes and CheckListBoxes
Fig. 13.10 String Collection Editor .
©2002 Prentice Hall.
All rights reserved.
Outline
30ListBoxTest.cs
1 // Fig 13.11: ListBoxTest.cs2 // Program to add, remove and clear list box items.
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
11 public class ListBoxTest : System.Windows.Forms.Form 12 {
13 // contains user-input list of elements
14 privateSystem.Windows.Forms.ListBox displayListBox;
15
16 // user input textbox
17 privateSystem.Windows.Forms.TextBox inputTextBox;
18
19 // add, remove, clear and exit command buttons 20 privateSystem.Windows.Forms.Button addButton;
21 privateSystem.Windows.Forms.Button removeButton;
22 privateSystem.Windows.Forms.Button clearButton;
23 privateSystem.Windows.Forms.Button exitButton;
24
25 [STAThread]
26 static voidMain() 27 {
28 Application.Run( new ListBoxTest() );
29 } 30
Display ListBox Text field for input
Add button
Remove Button
Clear button
Exit button
©2002 Prentice Hall.
All rights reserved.
Outline
31ListBoxTest.cs
31 // add new item (text from input box)32 // and clear input box 33 private voidaddButton_Click(
34 objectsender, System.EventArgs e ) 35 {
36 displayListBox.Items.Add( inputTextBox.Text );
37 inputTextBox.Clear();
38 } 39
40 // remove item if one selected 41 private voidremoveButton_Click(
42 object sender, System.EventArgs e ) 43 {
44 // remove only if item selected
45 if( displayListBox.SelectedIndex != -1) 46 displayListBox.Items.RemoveAt(
47 displayListBox.SelectedIndex );
48 } 49
50 // clear all items
51 private voidclearButton_Click(
52 objectsender, System.EventArgs e ) 53 {
54 displayListBox.Items.Clear();
55 } 56
57 // exit application
58 private voidexitButton_Click(
59 objectsender, System.EventArgs e ) 60 {
61 Application.Exit();
62 } 63
64 } // end class ListBoxTest
Add event handler
Add method
Remove method
Clear method Test if item is selected
Exit
©2002 Prentice Hall.
All rights reserved.
Outline
32ListBoxTest.cs
Program Output
©2002 Prentice Hall. All rights reserved.
13.4 ListBoxes and CheckListBoxes
C h e c k e d L i s t B o x p ro p e rt ie s, m e t h o d s a n d e v e n t s
D e sc rip t io n / D e le g a t e a n d Ev e n t A rg u m e n t s
C o m m o n P r o p e r tie s (A ll th e L i s t B o x p ro p e r tie s a n d e v e n ts a r e in h e r ite d b y C h e c k e d L i s t B o x.)
C h e c k e d I t e m s T h e c o lle c tio n o f ite m s th a t a re c h e c k e d . N o t th e s a m e a s th e s e le c te d ite m s , w h ic h a re h ig h lig h te d (b u t n o t n e c e ss a ril y c h e c k e d ).
C h e c k e d I n d i c e s R e tu rn s in d ic e s fo r th e ite m s th a t a re c h e c k e d . N o t th e s a m e a s th e s e le c te d in d ic e s .
S e l e c t i o n M o d e C a n o n l y h a v e v a lu e s O n e (a llo w s m u ltip le se le c tio n ) o r N o n e (d o e s n o t a llo w m u ltip le s e le c tio n ) .
C o m m o n M e th o d s
G e t I t e m C h e c k e d T a k e s a n in d e x a n d re tu rn s t r u e if c o rre sp o n d in g ite m c h e c k e d . C o m m o n E v e n ts (D e le g a te I t e m C h e c k E v e n t H a n d l e r , e v e n t a r g u m e n ts
I t e m C h e c k E v e n t A r g s)
I t e m C h e c k R a is e d w h e n a n ite m is c h e c k e d o r u n c h e c k e d . I t e m C h e c k E v e n t A r g s
P r o p e r tie s
C u r r e n t V a l u e W h e th e r c u rr e n t ite m is c h e c k e d o r u n c h e c k e d . V a lu e s C h e c k e d , U n c h e c k e d o r I n d e t e r m i n a t e .
I n d e x In d e x o f ite m th a t c h a n g e d . N e w V a l u e N e w s ta te o f ite m .
Fig . 1 3 .1 2 C h e c k e d L i s t B o x p ro p e rt ie s, m e t h o d s a n d e v e n t s.
©2002 Prentice Hall.
All rights reserved.
Outline
34CheckedListBoxTe st.cs
1 // Fig. 13.13: CheckedListBoxTest.cs
2 // Using the checked list boxes to add items to a list box 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
11 public class CheckedListBoxTest : System.Windows.Forms.Form 12 {
13 // list of available book titles 14 privateSystem.Windows.Forms.CheckedListBox 15 inputCheckedListBox;
16
17 // user selection list
18 privateSystem.Windows.Forms.ListBox displayListBox;
19
20 [STAThread]
21 static voidMain() 22 {
23 Application.Run( new CheckedListBoxTest() );
24 } 25
26 // item about to change,
27 // add or remove from displayListBox 28 private voidinputCheckedListBox_ItemCheck(
29 objectsender,
30 System.Windows.Forms.ItemCheckEventArgs e ) 31 {
32 // obtain reference of selected item 33 stringitem =
34 inputCheckedListBox.SelectedItem.ToString();
35
CheckedListBox
ListBox
ItemCheck
event handler
©2002 Prentice Hall.
All rights reserved.
Outline
35CheckedListBoxTe st.cs
Program Output
36 // if item checked add to listbox37 // otherwise remove from listbox 38 if( e.NewValue == CheckState.Checked ) 39 displayListBox.Items.Add( item );
40 else
41 displayListBox.Items.Remove( item );
42
43 } // end method inputCheckedListBox_Click 44
45 } // end class CheckedListBox
Add Item Remove Item
©2002 Prentice Hall. All rights reserved.
36
13.5 ComboBoxes
• Combine TextBox and drop-down list
• Add method adds object to collection
• Properties:
– DropDownStyle: determines type of ComboBox – Items: returns objects in the list
– SelectedItem: returns object selected
– SelectedIndex: returns index of selected item
©2002 Prentice Hall. All rights reserved.
13.5 ComboBoxes
Fig. 13.14 Demonstrating a ComboBox .
©2002 Prentice Hall. All rights reserved.
38
13.5 ComboBoxes
Co mb oBo x e v e n t s a n d p ro p e rt ie s
D e sc rip t io n / D e le g a t e a n d Ev e n t A rg u m e n t s
Com m on Properties
D r o pD o wn S ty l e D eterm ines the type of com bo box. Value S imple m eans that the text portion is editable and the list portion is alw ays visible. Value D r o pD o wn (the default) m eans that the text portion is editable but an arrow button m ust be clicked to see the list portion. Value
D r o pD o wn L is t m eans that the text portion is not editable and the arrow button m ust be clicked to see the list portion.
I t e ms C ollection of item s in the ComboBo x control.
M a x Dr o pD o wn I te m s M axim um num ber of item s to display in the drop-dow n list (betw een 1 and 100). If value is exceeded, a scroll bar appears.
S e l ec t ed I nd e x R eturns index of currently selected item . If there is no currently selected item , -1 is returned.
S e l ec t ed I te m R eturns reference to currently selected item .
S o r te d If true , item s appear in alphabetical order. D efault false.
Com m on Events (D elegate E ve ntHandler , event argum ents EventAr gs ) S e l ec t ed I nd e xC h an g e d R aised when selected index changes (i.e., a check box has been
checked or unchecked). Default w hen control double-clicked in designer.
Fig . 1 3.15 C o m bo B o x p ro p e rt ie s a n d e v e n t s.
©2002 Prentice Hall.
All rights reserved.
Outline
39ComboBoxTest.cs
1 // Fig. 13.16: ComboBoxTest.cs2 // Using ComboBox to select shape to draw 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
11 public class ComboBoxTest : System.Windows.Forms.Form 12 {
13 // contains shape list (circle, square, ellipse, pie) 14 privateSystem.Windows.Forms.ComboBox imageComboBox;
15
16 [STAThread]
17 static voidMain() 18 {
19 Application.Run( new ComboBoxTest() );
20 } 21
22 // get selected index, draw shape
23 private voidimageComboBox_SelectedIndexChanged(
24 objectsender, System.EventArgs e ) 25 {
26 // create graphics object, pen and brush 27 Graphics myGraphics = base.CreateGraphics();
28
29 // create Pen using color DarkRed 30 Pen myPen = new Pen( Color.DarkRed);
31
32 // create SolidBrush using color DarkRed 33 SolidBrush mySolidBrush =
34 new SolidBrush( Color.DarkRed);
35
Create ComboBox
SelectedIndexChanged event handler
Create graphics object
Create pen Create brush
©2002 Prentice Hall.
All rights reserved.
Outline
40ComboBoxTest.cs
36 // clear drawing area setting it to color White37 myGraphics.Clear( Color.White );
38
39 // find index, draw proper shape 40 switch( imageComboBox.SelectedIndex )
41 {
42 case0: // case circle is selected 43 myGraphics.DrawEllipse(
44 myPen, 50, 50, 150, 150);
45 break;
46 case1: // case rectangle is selected 47 myGraphics.DrawRectangle(
48 myPen, 50, 50, 150, 150);
49 break;
50 case2: // case ellipse is selected 51 myGraphics.DrawEllipse(
52 myPen, 50, 85, 150, 115);
53 break;
54 case3: // case pie is selected
55 myGraphics.DrawPie(
56 myPen, 50, 50, 150, 150, 0, 45);
57 break;
58 case4: // case filled circle is selected 59 myGraphics.FillEllipse(
60 mySolidBrush, 50, 50, 150, 150 );
61 break;
62 case5: // case filled rectangle is selected 63 myGraphics.FillRectangle(
64 mySolidBrush, 50, 50, 150, 150 );
65 break;
66 case6: // case filled ellipse is selected 67 myGraphics.FillEllipse(
68 mySolidBrush, 50, 85, 150, 115 );
69 break;
Switch statement to determine correct object to draw
Draw object
©2002 Prentice Hall.
All rights reserved.
Outline
ComboBoxTest.cs
Program Output
70 case7: // case filled pie is selected71 myGraphics.FillPie(
72 mySolidBrush, 50, 50, 150, 150, 0, 45 );
73 break;
74
75 } // end switch 76
77 } // end method imageComboBox_SelectedIndexChanged 78
79 } // end class ComboBoxTest
©2002 Prentice Hall.
All rights reserved.
Outline
42ComboBoxTest.cs
Program Output
©2002 Prentice Hall. All rights reserved.
43
13.6 TreeViews
• Displays nodes hierarchically
• Parent nodes have children
• The first parent node is called the root
• Use Add method to add nodes
©2002 Prentice Hall. All rights reserved.
44
13.6 TreeView
Fig. 13.17 Displaying a sample tree in a TreeView . Click to expand node,
displaying child nodes
Root node
Child nodes Click to collapse node,
hiding child nodes
©2002 Prentice Hall. All rights reserved.
13.6 TreeView
TreeView p ro p e rtie s a n d e v e n t s
D e sc rip t io n / De le g a t e a n d Ev e n t A rg u m e n t s
Common Properties
CheckBoxes
Indicates w hether checkboxes appear next to nodes.True
displays checkboxes. Default isFalse
.ImageList
Indicates theImageList
used to display icons by the nodes. AnImageList
is a collection that contains a num ber ofImage
objects.
Nodes
Lists the collection ofTreeNode
s in the control. Contains m ethodsAdd
(adds aTreeNode
object),Clear
(deletes the entire collection) andRemove
(deletes a specific node). Rem oving a parent node deletes all its children.SelectedNode
Currently selected node.Common Event (Delegate TreeViewEventHandler, event argum ents TreeViewEventArgs)
AfterSelect
Generated after selected node changes. Default when double-clicked in designer.Fig . 13.18
Tre eView p ro p e rt ie s a n d e v e n t s.©2002 Prentice Hall. All rights reserved.
46
13.6 TreeView
T r e e No d e p ro p e rt ie s a n d m e t h o d s
D e sc rip tio n / D e le g a t e a n d Ev e n t A rg u m e n t s
Com monP roperties
C h e c k e d Indicates w hether the T re eNo d e is checked.
(C h e c k B o xe s property m ust be set to T ru e in parent
T r e e Vi e w.)
F i r s t N o de Specifies the first node in the N o d e s collection (i.e., first child in tree).
F u l l P a t h Indicates the path of the node, starting at the root of the tree.
I m a g e I n de x Specifies the index of the im age to be show n when the node is deselected.
L a s t N o d e Specifies the last node in the N o d e s collection (i.e., last child in tree).
N e x t N o d e N ext sibling node.
N o d e s The collection of T r ee N o d es contained in the current node (i.e., all the children of the current node). C ontains m ethods Ad d
(adds a Tr e eN o d e object), C l e a r (deletes the entire collection) and Re m ov e (deletes a specific node). R em oving a parent node deletes all its children.
P r e v N o d e Indicates the previous sibling node.
S e l e c t e dI m a g e I n d e x
Specifies the index of the im age to use w hen the node is selected.
T e x t Specifies the text to display in the Tr e e V i ew.
Com mon M ethods
C o l l a p s e C ollapses a node.
E x p a n d Expands a node.
E x p a n d A ll Expands all the children of a node.
G e t N o d e Co u n t R eturns the number of child nodes.
Fig . 13.19 Tre eN od e p ro p e rt ie s a n d m e t h o d s.
©2002 Prentice Hall. All rights reserved.
47
13.6 TreeView
Fig. 13.20 TreeNode Editor .
©2002 Prentice Hall.
All rights reserved.
Outline
48TreeViewDirector yStructureTest.c s
1 // Fig. 13.21: TreeViewDirectoryStructureTest.cs 2 // Using TreeView to display directory structure 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;
11
12 public class TreeViewDirectoryStructureTest 13 : System.Windows.Forms.Form
14 {
15 // contains view of c: drive directory structure 16 privateSystem.Windows.Forms.TreeView directoryTreeView;
17
18 [STAThread]
19 static voidMain() 20 {
21 Application.Run(
22 new TreeViewDirectoryStructureTest() );
23 } 24
25 public voidPopulateTreeView(
26 stringdirectoryValue, TreeNode parentNode ) 27 {
28 // populate current node with subdirectories 29 string[] directoryArray =
30 Directory.GetDirectories( directoryValue );
31
Class that creates children of root
Get subdirectories
of root
©2002 Prentice Hall.
All rights reserved.
Outline
TreeViewDirector yStructureTest.c s
32 // populate current node with subdirectories
33 try
34 {
35 if ( directoryArray.Length != 0 )
36 {
37 // for every subdirectory, create new TreeNode, 38 // add as child of current node and recursively 39 // populate child nodes with subdirectories 40 foreach( string directory in directoryArray )
41 {
42 // create TreeNode for current directory 43 TreeNode myNode = new TreeNode( directory );
44
45 // add current directory node to parent node 46 parentNode.Nodes.Add( myNode );
47
48 // recursively populate every subdirectory 49 PopulateTreeView( directory, myNode );
50 }
51
52 } // end if
53 }
54
55 // catch exception
56 catch ( UnauthorizedAccessException )
57 {
58 parentNode.Nodes.Add( "Access denied");
59 }
60
61 } // end PopulateTreeView 62
Catches security exception
Create new node
Recursive call to finish tree
©2002 Prentice Hall.
All rights reserved.
Outline
50TreeViewDirector yStructureTest.c s
63 // called by system when form loads
64 private voidTreeViewDirectoryStructureTest_Load(
65 objectsender, System.EventArgs e) 66 {
67 // add c:\ drive to directoryTreeView and 68 // insert its subfolders
69 directoryTreeView.Nodes.Add( "C:\\");
70 PopulateTreeView(
71 "C:\\", directoryTreeView.Nodes[ 0 ] );
72 } 73
74 } // end class TreeViewDirectoryStructure
Create root
©2002 Prentice Hall.
All rights reserved.
Outline
51TreeViewDirector yStructureTest.c s
Program Output
©2002 Prentice Hall. All rights reserved.
52
13.7 ListViews
• Displays list of items
– Can select one or more items from list
– Displays icons to go along with items
©2002 Prentice Hall. All rights reserved.
13.7 ListViews
L i s t V i e w e v e n t s a n d p ro p e rt ie s
D e sc rip t io n / D e le g a t e a n d Ev e n t A rg u m e n t s
C om m on P roperties
A c t i v a t i o n D ete rm in e s h ow th e u ser a ctivate s an ite m . T h is pro p erty take s a value in the I t e m A c t i v a t i o n en um eratio n. Po ssib le va lues are O n e C l i c k (single-clic k a ctiva tio n ), T w o C l i c k (d ou ble- click activation , ite m ch an ges co lo r w hen sele cted ) and S t a n d a r d (do ub le -c lick ac tivatio n).
C h e c k B o x e s Ind ic ate s w hethe r ite m s ap pear w ith ch eckb o xes. T r u e displa ys ch e ckbo xes. D efau lt is F a l s e.
L a r g e I m a g e L i s t
Ind ic ate s the I m a g e L i s t u sed w he n d isp layin g large ico n s.
I t e m s R e tu rn s the co lle ctio n of L i s t V i e w I t e ms in th e c ontro l.
M u l t i S e l e c t D ete rm in e s w h eth e r m u ltip le selec tio n is allow ed. D efa ult is T r u e, w hich e n ab le s m u ltiple sele ctio n.
S e l e c t e d I t e m s L ists th e c o llectio n of cu rren tly se lec ted item s.
S m a l l I m a g e L i s t
Sp e cifie s th e I m a g e L i s t used w h en disp layin g sm all ic on s.
V i e w D ete rm in e s a ppe aran ce of L i s t V i e w I t e ms. V a lu es L a r g e I c o n (la rge ico n d isp la yed , ite m s c an b e in m u ltip le co lu m n s), S m a l l I c o n (sm a ll icon d isp la yed ), L i s t (sm all ic on s d isp layed , item s app ea r in a single c o lum n ) an d D e t a i l s (like L i s t, b ut m u ltiple co lu m n s o f info rm atio n c an be d ispla ye d p er item ).
C om m onE vent (D eleg ate E v e n t H a n d l e r , even t argu m en ts E v e n t A r g s)
I t e m A c t i v a t e G en erated w h en an item in th e L i s t V i e w is ac tivated . D o e s n o t sp ec ify w h ich item is a ctiva ted .
©2002 Prentice Hall. All rights reserved.
54
13.7 ListViews
Fig. 13.23 Image Collection Editor window for an ImageList component.
©2002 Prentice Hall.
All rights reserved.
Outline
55ListViewTest.cs
1 // Fig. 13.24: ListViewTest.cs2 // Displaying directories and their contents in ListView.
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;
11
12 public class ListViewTest : System.Windows.Forms.Form 13 {
14 // display labels for current location 15 // in directory tree
16 privateSystem.Windows.Forms.Label currentLabel;
17 privateSystem.Windows.Forms.Label displayLabel;
18
19 // display contents of current directory
20 privateSystem.Windows.Forms.ListView browserListView;
21
22 // specifies images for file icons and folder icons 23 privateSystem.Windows.Forms.ImageList fileFolder;
24
25 // get current directory 26 stringcurrentDirectory = 27 Directory.GetCurrentDirectory();
28
29 [STAThread]
30 static voidMain() 31 {
32 Application.Run( new ListViewTest() );
33 } 34
Create Image List
Load the current directory
©2002 Prentice Hall.
All rights reserved.
Outline
56ListViewTest.cs
35 // browse directory user clicked or go up one level36 private voidbrowserListView_Click(
37 objectsender, System.EventArgs e ) 38 {
39 // ensure item selected
40 if( browserListView.SelectedItems.Count != 0 )
41 {
42 // if first item selected, go up one level 43 if ( browserListView.Items[ 0].Selected )
44 {
45 // create DirectoryInfo object for directory 46 DirectoryInfo directoryObject =
47 new DirectoryInfo( currentDirectory );
48
49 // if directory has parent, load it 50 if( directoryObject.Parent != null)
51 LoadFilesInDirectory(
52 directoryObject.Parent.FullName );
53 }
54
55 // selected directory or file
56 else
57 {
58 // directory or file chosen 59 stringchosen =
60 browserListView.SelectedItems[ 0 ].Text;
61
62 // if item selected is directory
63 if( Directory.Exists( currentDirectory + 64 "\\"+ chosen ) )
65 {
Test to see if at root Return parent of current directory
Check if selected item is directory
Test if item is
selected
If first item selected
go up one level
Make directory information
©2002 Prentice Hall.
All rights reserved.
Outline
ListViewTest.cs
66 // load subdirectory67 // if in c:\, do not need '\',
68 // otherwise we do
69 if( currentDirectory == "C:\\")
70 LoadFilesInDirectory(
71 currentDirectory + chosen );
72 else
73 LoadFilesInDirectory(
74 currentDirectory + "\\"+ chosen );
75 } //end if
76
77 } // end else 78
79 // update displayLabel
80 displayLabel.Text = currentDirectory;
81
82 } // end if 83
84 }// end method browserListView_Click 85
86 // display files/subdirectories of current directory 87 public voidLoadFilesInDirectory(
88 stringcurrentDirectoryValue ) 89 {
90 // load directory information and display
91 try
92 {
93 // clear ListView and set first item 94 browserListView.Items.Clear();
95 browserListView.Items.Add( "Go Up One Level" );
96
Class to load files in current directory Update to display
current directory Load subdirectory
©2002 Prentice Hall.
All rights reserved.
Outline
58ListViewTest.cs
97 // update current directory98 currentDirectory = currentDirectoryValue;
99 DirectoryInfo newCurrentDirectory = 100 newDirectoryInfo( currentDirectory );
101
102 // put files and directories into arrays 103 DirectoryInfo[] directoryArray = 104 newCurrentDirectory.GetDirectories();
105
106 FileInfo[] fileArray =
107 newCurrentDirectory.GetFiles();
108
109 // add directory names to ListView
110 foreach ( DirectoryInfo dir in directoryArray )
111 {
112 // add directory to ListView 113 ListViewItem newDirectoryItem = 114 browserListView.Items.Add( dir.Name );
115
116 // set directory image
117 newDirectoryItem.ImageIndex = 0;
118 }
119
120 // add file names to ListView 121 foreach ( FileInfo file in fileArray )
122 {
123 // add file to ListView 124 ListViewItem newFileItem =
125 browserListView.Items.Add( file.Name );
126
127 newFileItem.ImageIndex = 1; // set file image
128 }
129 } // end try 130
Get subdirectories of current directory Get files of current directory
Add directory to list
Add file to list
©2002 Prentice Hall.
All rights reserved.
Outline
59ListViewTest.cs
131 // access denied132 catch ( UnauthorizedAccessException exception )
133 {
134 MessageBox.Show(
135 "Warning: Some fields may not be " + 136 "visible due to permission settings", 137 "Attention", 0, MessageBoxIcon.Warning );
138 }
139
140 } // end method LoadFilesInDirectory 141
142 // handle load event when Form displayed for first time 143 private voidListViewTest_Load(
144 object sender, System.EventArgs e ) 145 {
146 // set image list
147 Image folderImage = Image.FromFile(
148 currentDirectory + "\\images\\folder.bmp");
149
150 Image fileImage = Image.FromFile( currentDirectory + 151 "\\images\\file.bmp");
152
153 fileFolder.Images.Add( folderImage );
154 fileFolder.Images.Add( fileImage );
155
156 // load current directory into browserListView 157 LoadFilesInDirectory( currentDirectory );
158 displayLabel.Text = currentDirectory;
159
160 } // end method ListViewTest_Load 161
162 } // end class ListViewTest
Security exception handler
Load Images
©2002 Prentice Hall.
All rights reserved.
Outline
60ListViewTest.cs
Program Output
©2002 Prentice Hall. All rights reserved.
13.8 TabControl
• Creates tabbed windows
• Windows called TabPage objects
– TabPages can have controls
– Tabpages have own Click event for when tab is clicked
©2002 Prentice Hall. All rights reserved.
62
13.8 Tab Controls
Fig. 13.25 Tabbed pages in Visual Studio .NET.
Tab pages
©2002 Prentice Hall. All rights reserved.
63
13.8 Tab Controls
Fig. 13.26 Example TabControl with TabPage s.
TabPage
TabControl
Controls in TabPage
©2002 Prentice Hall. All rights reserved.
64
13.8 Tab Controls
Fig. 13.27 Adding TabPage s to the TabControl .
©2002 Prentice Hall. All rights reserved.
13.8 Tab Controls
TabControl
p ro p e rt ie s a nd e v e n tsDe sc rip tio n / De le g a t e a nd Ev e n t A rg u m e nt s
Common Properties
ImageList
Specifies images to be displayed on a tab.ItemSize
Specifies tab size.MultiLine
Indicates whether multiple rows of tabs can be displayed.SelectedIndex
Indicates index ofTabPage
that is currently selected.SelectedTab
Indicates theTabPage
that is currently selected.TabCount
Returns the number of tabs.TabPages
Gets the collection ofTabPage
s within ourTabControl
.Common Event (Delegate EventHandler, event arguments EventArgs)
SelectedIndexCha nged
Generated when
SelectedIndex
changes (i.e., anotherTabPage
is selected).Fig . 13.28 TabControl
p ro p e rtie s a nd e ve n ts.©2002 Prentice Hall.
All rights reserved.
Outline
66UsingTabs.cs
1 // Fig. 13.29: UsingTabs.cs2 // Using TabControl to display various font settings.
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
11 public class UsingTabs : System.Windows.Forms.Form 12 {
13 // output label reflects text changes
14 privateSystem.Windows.Forms.Label displayLabel;
15
16 // table control containing table pages colorTabPage, 17 // sizeTabPage, messageTabPage and aboutTabPage 18 privateSystem.Windows.Forms.TabControl 19 optionsTabControl;
20
21 // table page containing color options
22 privateSystem.Windows.Forms.TabPage colorTabPage;
23 privateSystem.Windows.Forms.RadioButton 24 greenRadioButton;
25 privateSystem.Windows.Forms.RadioButton redRadioButton;
26 privateSystem.Windows.Forms.RadioButton 27 blackRadioButton;
28
Color tab
Color buttons for
color tab
©2002 Prentice Hall.
All rights reserved.
Outline
67UsingTabs.cs
29 // table page containing font size options30 privateSystem.Windows.Forms.TabPage sizeTabPage;
31 privateSystem.Windows.Forms.RadioButton 32 size20RadioButton;
33 privateSystem.Windows.Forms.RadioButton 34 size16RadioButton;
35 privateSystem.Windows.Forms.RadioButton 36 size12RadioButton;
37
38 // table page containing text display options 39 privateSystem.Windows.Forms.TabPage messageTabPage;
40 privateSystem.Windows.Forms.RadioButton 41 goodByeRadioButton;
42 privateSystem.Windows.Forms.RadioButton 43 helloRadioButton;
44
45 // table page containing about message
46 privateSystem.Windows.Forms.TabPage aboutTabPage;
47 privateSystem.Windows.Forms.Label messageLabel;
48
49 [STAThread]
50 static voidMain() 51 {
52 Application.Run( new UsingTabs() );
53 } 54
55 // event handler for black color radio button 56 private voidblackRadioButton_CheckedChanged(
57 objectsender, System.EventArgs e ) 58 {
59 displayLabel.ForeColor = Color.Black;
60 } 61
Size tab
Size buttons
Message tab
About tab
Event handler
©2002 Prentice Hall.
All rights reserved.
Outline
68UsingTabs.cs
62 // event handler for red color radio button63 private voidredRadioButton_CheckedChanged(
64 objectsender, System.EventArgs e ) 65 {
66 displayLabel.ForeColor = Color.Red;
67 } 68
69 // event handler for green color radio button 70 private voidgreenRadioButton_CheckedChanged(
71 objectsender, System.EventArgs e ) 72 {
73 displayLabel.ForeColor = Color.Green;
74 } 75
76 // event handler for size 12 radio button 77 private voidsize12RadioButton_CheckedChanged(
78 objectsender, System.EventArgs e ) 79 {
80 displayLabel.Font =
81 new Font( displayLabel.Font.Name, 12);
82 } 83
84 // event handler for size 16 radio button 85 private voidsize16RadioButton_CheckedChanged(
86 objectsender, System.EventArgs e ) 87 {
88 displayLabel.Font =
89 new Font( displayLabel.Font.Name, 16);
90 } 91
Event handlers
©2002 Prentice Hall.
All rights reserved.
Outline
UsingTabs.cs
92 // event handler for size 20 radio button93 private voidsize20RadioButton_CheckedChanged(
94 objectsender, System.EventArgs e ) 95 {
96 displayLabel.Font =
97 new Font( displayLabel.Font.Name, 20 );
98 } 99
100 // event handler for message "Hello!" radio button 101 private voidhelloRadioButton_CheckedChanged(
102 objectsender, System.EventArgs e ) 103 {
104 displayLabel.Text = "Hello!";
105 } 106
107 // event handler for message "Goodbye!" radio button 108 private voidgoodByeRadioButton_CheckedChanged(
109 objectsender, System.EventArgs e ) 110 {
111 displayLabel.Text = "Goodbye!";
112 } 113
114 } // end class UsingTabs
Event handlers
©2002 Prentice Hall.
All rights reserved.
Outline
70UsingTabs.cs
Program Output
©2002 Prentice Hall. All rights reserved.
71
13.9 Multiple-Document Interface Windows
• Users can edit multiple documents at once
• Usually more complex then single-document- interface applications
• Application window called parent, others child
• Parent and child menus can be merged
– Based on MergeOrder property
• Child windows can be arranged in parent window:
– Tiled windows: completely fill parent, no overlap
• Either horizontal or vertical
– Cascaded windows: overlap, same size, display title bar – ArrangeIcons: arranges icons for minimized windows
©2002 Prentice Hall. All rights reserved.
72
13.9 Multiple Document Interface (MDI) Windows
Fig. 13.30 MDI parent and MDI child.
MDI parent
MDI child
MDI child