Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C# ПІДРУЧНИКИ / c# / Manning - Windows.forms.programming.with.c#.pdf
Скачиваний:
108
Добавлен:
12.02.2016
Размер:
14.98 Mб
Скачать

C H A P T E R

1 1

 

 

More controls

11.1Tab controls 354

11.2Tab pages 359

11.3Dates and Times 366

11.4Calendars 372

11.5Recap 381

Chapters 9 and 10 examined basic controls such as buttons and labels, and list controls such as the ListBox class. In this chapter we discuss the tab controls and controls for displaying dates and times. Tab controls are especially useful when used to separate a large number of controls into logical groups within a single region of a form. The date controls, of course, are used to present and specify DateTime structures in a form.

The specific controls discussed in this chapter are the following:

TabControl

TabPage

DateTimePicker

MonthCalendar

Since the MyAlbumEditor project served us so well in chapter 10, we will continue to use this project here as well. Of course, any changes we make to our MyPhotoAlbum library will be available when we return to the MyPhotos project in chapter 12.

We begin our discussion with tab controls.

353

Tab-

11.1TAB CONTROLS

Tab controls are used to compact a large amount of data into a single form by segmenting the data into different screens, or tab pages. One of the more well-known examples of this construct is the Properties window associated with files and directories in the Windows file system. Right-click on a directory and select the Properties item, and you will see a window similar to figure 11.1. This figure shows the properties for the MyAlbumEditor directory containing the project we began in chapter 10. There are three tab pages available to display different types of directory properties: General, Web Sharing, and Sharing. The exact tabs displayed on your system may differ depending on which version of Windows you are running and the specific features installed and enabled.

Figure 11.1

Users switch to a different tab page by clicking on the desired tab, or using the keyboard shortcut Ctrl+Tab.

You can create windows similar to figure 11.1 using the Windows Forms classes Control and TabPage. The TabControl class is a container for one or more TabPage objects, with each TabPage instance holding the tab information and set of controls to display for a specific page. Since I haven't shown you a class diagram for a few chapters, take a look at figure 11.2 showing the class hierarchy for the tab and tab page controls. It is also worth noting that the complete class hierarchy of all Windows Forms controls is shown in appendix C.

As shown in figure 11.2, the TabControl class inherits directly from the Control class we discussed in chapter 3. We will look at the members of this class in a moment. The TabPage class, on the other hand, inherits from the Panel class. This makes sense, since each page in a tab control contains a collection of controls, exactly

354

CHAPTER 11 MORE CONTROLS

like a Panel object. This also permits tab pages to automatically scroll if the display area exceeds the size of the window by using members of the ScrollableControl class. We saw how to enable this type of scrolling for Form and Panel objects in chapter 7.

Figure 11.2

The TabPage class is a Panel object that exists within a tab control.

In this chapter we will look at the details of both the TabControl and the TabPage class. We examine the TabControl class first.

11.1.1THE TABCONTROL CLASS

The TabControl class provides a container in which to manage a collection of

TabPage objects. This container class provides members to control the location, appearance, and behavior of the pages in the control. Details on this class are provided in .NET Table 11.1.

Tab controls are often forgotten or perhaps forsaken by programmers. It is not uncommon to see a user interface packed full of buttons, labels, text boxes, and other controls. Often these are collected into group boxes to separate the information into logical groups. While such interfaces are very functional, they may not be so effective since users must process so much information at once. Visual Studio .NET allows multiple tab pages to be created for an interface quite easily, so perhaps programmers will think to use these constructs more often in the future. As a rule of thumb, make sure the controls in each tab page are all related, and try to limit yourself to no more than seven controls per page. The number seven here is not completely arbitrary, as user interface research has shown that this is a reasonable maximum number of items to present to a user at once.1

1See the references listed in the bibliography for more information on this and other aspects of good user interface design.

TAB CONTROLS

355

.NET Table 11.1 TabControl class

The TabControl class is a control that presents a collection of tab pages to the user. Each tab page is represented by a TabPage class instance. This class is part of the System.Windows.Forms namespace, and inherits from the Control class. See .NET Table 4.1 on page 104 for a list of members inherited from the Control class, and .NET Table 11.2 on page 360 for details on the TabPage class.

 

Alignment

Gets or sets the area of the control where tabs are

 

 

displayed, called the tab strip. Defaults to the top of

 

 

the control.

 

Appearance

Gets or sets how the tabs are displayed, such as a

 

 

normal tab or 3D button.

 

DrawMode

Gets or sets how the tabs are drawn in the control.

 

HotTrack

Gets or sets whether the tabs change their

 

 

appearance when the mouse passes over them.

 

ImageList

Gets or sets the list of images to use on the

 

 

control’s tabs.

 

ItemSize

Gets or sets the default size of each tab.

Public

Multiline

Gets or sets whether more than one line of tabs

 

can be displayed.

Properties

 

 

 

 

RowCount

Gets the number of rows currently displayed on the

 

 

control’s tab strip.

 

SelectedIndex

Gets or sets the index of the currently selected tab

 

 

page.

 

SelectedTab

Gets or sets the currently selected TabPage object.

 

ShowToolTips

Gets or sets whether the tool tips for each tab page

 

 

should be displayed.

 

SizeMode

Gets or sets how the tabs for the control are sized.

 

TabCount

Gets the number of tab pages in the control.

 

TagPages

Gets the collection of TabPage objects contained

 

 

by this control.

 

 

 

Public

GetTabRect

Returns the bounding Rectangle for a specified

Methods

 

tab.

 

 

 

Public

DrawItem

Occurs when a tab must be drawn.

 

 

Events

SelectedIndexChanged

Occurs when a new tab page is selected.

 

 

 

 

11.1.2CREATING A TAB CONTROL

Let’s create a new tab control for our MyAlbumEditor project. We will do this by creating a new form to display the collection of images in an album. While this is not necessarily an efficient use of memory, it does provide a nice example of tab controls and tab pages. Figure 11.3 shows the new dialog with our favorite album displayed.

356

CHAPTER 11 MORE CONTROLS

Соседние файлы в папке c#