1. Trang chủ
  2. » Công Nghệ Thông Tin

Netframwork 2.0 (phần 11) pot

50 338 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 50
Dung lượng 446,46 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

When settings for a print job need to be configured by the user, you can enable the user to make appro­ priate selections by displaying the PrintDialog component and the PageSetupDialog

Trang 1

Lab: Use the XmlDocument Class

In this lab, you will add XmlDocument functionality to a preexisting partial solution You will load the content from the BookStore.xml file into an XmlDocument instance, and then you will add new elements to the XmlDocument instance

Exercise 1: Add XMLDocument Functionality to a Partial Solution

1 From the directory on the companion CD, load the partial solution for the lan­

guage you are working in

2 Open Form1 in the Designer Then, double-click the Load XML button to open

the btnLoadXml_Click event handler

3 Beneath the content already in this method, add the following code:

7 Beneath the first line of code already in this method (for Visual Basic) or within

the if block (for C#), add the following code:

' VB

Trang 2

For Each j As ListViewItem In ListView1.Items Dim bElement As Xml.XmlElement

bElement = doc.CreateElement("chapter") bElement.SetAttribute("num", j.SubItems(0).Text) bElement.SetAttribute("name", j.SubItems(1).Text) Dim atext As Xml.XmlText

atext = doc.CreateTextNode(j.SubItems(2).Text) bElement.AppendChild(atext)

Trang 3

8 Press F5 to compile and run your application

9 Press the Load Xml button and navigate to the Bookstore.xml file located in the

directory on the companion CD Select the file to load it into the XmlDocument

instance

10 Press the View Xml button to view the XML Then, close Form2

11 In Form1, add entries for ISBN, Title, and Price

12 Add entries for Chapter Name and Chapter Text and click the Add Chapter but­

ton Repeat this step as many times as you like

13 Press the Add Book button to add the book data to your XmlDocument class

14 Click the View Xml button to view the updated XML Note that the book you

added appears at the end of the XML file

Trang 4

Lesson Summary

The XmlDocument class provides an in-memory representation of XML data that

can be modified in a direction-independent manner XML data can be read into

an XmlDocument instance through the XmlDocument.Load and XmlDocu­ ment.LoadXml methods

The XmlDocument class contains methods for creating all different kinds of XML

nodes Once a node has been created, it must be inserted into the XML repre­

sented by the XmlDocument class by a separate method

The XmlDocument class exposes several methods and properties that provide for

the direct modification of the XML that it contains You can change the value of existing nodes, replace specific nodes or an entire set of nodes, replace a range of characters in a value, or set attribute values

You can write XML from the XML document to an instance of the XmlWriter class by using the XmlDocument.WriteTo method

XmlNamedNodeMap consists of an unordered set of XmlNode instances that can

be accessed by index or name XmlNodeList represents an ordered set of Node instances that can be accessed by index

Xml-■ The XmlDocument class raises events in response to changes in the XML struc­

ture You can handle these events to execute code in response to changes in the XML

■ The XML declaration provides information about the XML version and the encoding used for the XML data You can set the encoding property to a value appropriate for different international locales

Lesson Review

The following questions are intended to reinforce key information presented in this lesson The questions are also available on the companion CD if you prefer to review them in electronic form

NOTE Answers

Answers to these questions and explanations of why each choice is right or wrong are located in the “Answers” section at the end of the book

Trang 5

1 Given an XmlDocument named myDoc and an XmlNode that it contains named

myNode, which of the following code samples will create a new element named Test and add it as a child of myNode?

2 Given an instance of XmlNode named Node1 that has a child node named

child-Node and a string aString that contains a set of XML nodes, you want to replace the child node of Node1 with the XML contained in aString Which of the follow­

ing code samples is correct for this scenario?

A ' VB

Node1.ReplaceChild(childNode, aString)

// C#

Node1.ReplaceChild(childNode, aString);

Trang 7

Chapter Review

To further practice and reinforce the skills you learned in this chapter, you can per­form the following tasks:

■ Review the chapter summary

■ Review the list of key terms introduced in this chapter

■ Complete the case scenarios These scenarios set up real-world situations involv­ing the topics of this chapter and ask you to create a solution

■ Complete the suggested practices

■ Take a practice test

Chapter Summary

The XmlReader class is an abstract class Implementations of this class provide cached, forward-only access to an XML file or stream XmlTextReader, XmlNode- Reader, and XmlValidatingReader all provide implementations of the XmlReader class The XmlReader.Read method advances the reader to the next node of the

non-XML and reads the name and value of that node You can navigate the attributes of

an element with the MoveToAttribute method

The XmlWriter class is an abstract class Implementations of this class are used

for writing XML content in a forward-based manner You can obtain an instance

of a default implementation of XmlWriter through the XmlWriter.Create method

The XmlDocument class provides an in-memory representation of XML data It

provides methods for creating XML nodes, inserting them into the XML docu­ment, copying nodes, removing nodes, and modifying nodes

The XmlDocument class raises events in response to changes in the XML struc­

ture You can handle these events to execute code in response to these changes

Trang 8

Case Scenarios

In the following case scenarios, you will apply what you’ve learned about working with XML You can find answers to these questions in the “Answers” section at the end of this book

Case Scenario 1: Report Archiving

Well, you’re moving on up in the world of the Humongous Insurance company, and they’ve put you on another very important project One thing that they love at Humongous Insurance is paperwork Recently, affiliate offices all over the world have switched to sending weekly reports to the home office in an XML format These reports all need to be stored and archived and will be compressed using a proprietary technology in-house Your job is to make sure that reports coming in can be automat­ically parsed and fed into the compression API

Questions

1 How can we automatically parse incoming reports?

2 How can we ensure that reports conform to our published schema?

3 How can we ensure that errors can be corrected by a human being when they

occur?

Case Scenario 2: The Merger

Humongous Insurance has just acquired Trey Research The main reason for the acquisition of Trey Research was a vast store of proprietary paperwork in custom XML formats The acquisition is now complete and Humongous Insurance needs to replace the name of Trey Research with its own as well as with some other particulars Unfortunately, due to variations in some of the content, a textual find-and-replace is out of the question, and the content must be replaced based on the element name that surrounds the content, not on the content itself

Questions

■ How can we create a simple application that can quickly replace some of the information contained in these nodes with our own information but leave the rest of the documents intact?

Trang 9

Suggested Practices

■ Build an application that allows the user to enter data into a grid and then uses

the XmlWriter class to write it to an XML file

Create a subclass of XmlDocument that validates the structure of the XML against

an inline or referenced schema whenever the structure of the XML changes Use

the data object model (DOM) events to write the XML content of the XmlDocu­ ment instance to a stream that is read by XmlValidatingReader that raises events

when an error occurs

Take a Practice Test

The practice tests on this book’s companion CD offer many options For example, you can test yourself on just the content covered in this chapter, or you can test yourself on all the 70-526 certification exam content You can set up the test so that it closely sim­ulates the experience of taking a certification exam, or you can set it up in study mode

so that you can look at the correct answers and explanations after you answer each question

MORE INFO Practice tests

For details about all the practice test options available, see the “How to Use the Practice Tests” sec­ tion in this book’s Introduction

Trang 11

Creating printed documents is an essential task in most business environments, but

it can be a complicated and confusing task to program Microsoft Visual Studio 2005 provides several classes and dialog boxes that simplify the task of programming

printing This chapter describes the use of the various print dialog boxes, the Document component, and the PrintPreview control

Print-Exam objectives in this chapter:

■ Manage the print process by using print dialogs

❑ Configure Windows Forms print options at run time

❑ Change the printers attached to a user’s computer in Windows Forms

Configure the PrintPreviewDialog control

❑ Display a Print Preview window in Windows applications

Set page details for printing using the PageSetupDialog component

■ Construct print documents

Configure the PrintDocument component

❑ Print a text document in a Windows Form

❑ Print graphics in a Windows Form

Print a document by using the PrintDialog component

❑ Alert users to the completion of a print job

Create a customized PrintPreview component

Set the Document property to establish the document to be previewed

Set the Columns and Rows properties to establish the number of pages dis­

played horizontally and vertically on the control

Set the UseAntiAlias property to True to make the text appear smoother

Set the Zoom property to establish the relative zoom level when the docu­

ment preview appears

485

Trang 12

Set the StartPage property to establish which document page is displayed

when the document preview appears

❑ Set additional properties

Add custom methods and events to a PrintPreviewControl

Lessons in this chapter:

■ Lesson 1: Managing the Print Process by Using Print Dialogs 487

■ Lesson 2: Constructing Print Documents 496

Lesson 3: Creating a Customized PrintPreview Component 509

Before You Begin

To complete the lessons in this chapter, you must have:

■ A computer that meets or exceeds the minimum hardware requirements listed in the “Introduction” at the beginning of the book

■ Visual Studio 2005 Professional Edition installed on your computer

■ An understanding of Microsoft Visual Basic or C# syntax and familiarity with the Microsoft NET Framework

Real World

Matt Stoecker

The process of creating print documents can be frustrating and difficult Before the NET Framework was introduced, I found the process of actually getting a document to the printer to be so difficult that I avoided it whenever I possibly could With the introduction of the NET Framework, printing is now easy to code and it is easier to create added value in the applications I create

Trang 13

Lesson 1: Managing the Print Process by Using Print

Dialogs

When printing a document, a user typically will want to have a high level of config­urability over the printing process Users typically want to be able to choose options such as paper orientation, margins, and paper size The NET Framework contains classes that allow you to expose a broad range of options to your users while still retaining control over the range of options you permit

After this lesson, you will be able to:

■ Configure Windows Forms print options at run time

■ Change the printers attached to a user’s machine in Windows Forms

Configure the PrintPreviewDialog control

■ Display a Print Preview in Windows applications

Set page details for printing using the PageSetupDialog component

Estimated lesson time: 45 minutes

The PrinterSettings Class

The class that contains all of the information about a print job and the page settings

associated with that print job is the PrinterSettings class Each PrintDocument compo­ nent exposes an instance of the PrinterSettings class and accesses this instance to get

the settings for the print job Most of this is done automatically, and the developer

need not worry about accessing the PrinterSettings class directly When settings for a

print job need to be configured by the user, you can enable the user to make appro­

priate selections by displaying the PrintDialog component and the PageSetupDialog

component

The PrintDialog Component

The PrintDialog component encapsulates a Print dialog box This dialog box can be

displayed to the user at run time to allow the user to configure a variety of options for

printing as well as allowing the user to choose a printer The PrintDialog component

at run time is shown in Figure 10-1

Trang 14

Figure 10-1 The PrintDialog component at run time

The PrintDialog component also exposes a variety of properties to the developer that allow him or her to configure the interface of the PrintDialog component when

it is shown The important properties of the PrintDialog component are described in

AllowPrintToFile Indicates whether the Print To File check box is enabled

AllowSelection Indicates whether the Selection option button is enabled

AllowSomePages Indicates whether the Pages option button is enabled

Document The PrintDocument that is associated with the PrintDialog

box

PrinterSettings The PrinterSettings object associated with the selected

printer These settings are modified when the user changes settings in the dialog box

Trang 15

Table 10-1 Important Properties of the PrintDialog Component

PrintToFile Indicates whether the Print To File checkbox is selected

ShowHelp Indicates whether the Help button is shown

ShowNetwork Indicates whether the Network button is shown

Modifying Selected Print Options with the PrintDialog Component

When the PrintDialog component is shown, the user can make changes to the config­

uration of the print job by setting options that are displayed in the PrintDialog box

You can restrict the options displayed by modifying the properties of the PrintDialog

component This generally involves setting one of the Boolean properties described in

Table 10-1 to True to enable the option or False to disable the option The following

example demonstrates how to enable the user to select a range of pages to print

' VB

PrintDialog1.AllowSomePages = True

// C#

printDialog1.AllowSomePages = true;

By setting the properties described in Table 10-1, you can configure your PrintDialog

component to allow or restrict whatever options you desire For example, the follow­

ing code example demonstrates how to create a PrintDialog component that allows

the user to print all pages, the current page, a selection, or a specified range of pages:

Changing the Selected Printer at Run Time

The PrintDialog component allows the user to change the selected printer at run time

by choosing a printer displayed in the Print dialog box When the user selects a new

printer, the PrinterSettings property is updated to reflect this

Trang 16

Using the PrintDialog Box to Print a PrintDocument Component

After options have been selected, you can query the DialogResult returned by the Dialog.ShowDialog method If the DialogResult is OK, you can print the associated PrintDocument component by calling the PrintDocument.Print method An example is

Print-shown here:

' VB

// C#

PrintDialog1.Document.Print();

The PageSetupDialog Component

The PageSetupDialog component enables users to select options about the setup of the pages for a print job A PageSetupDialog component at run time is shown in Figure 10-2

Figure 10-2 The PageSetupDialog component at run time

Trang 17

Changes made by the user in the PageSetupDialog are automatically reflected in the PrinterSettings class of the PrintDocument component that is associated with the Page- SetupDialog box You can set the options that will be displayed to the user by setting the properties of the PageSetupDialog component Important properties of the Page- SetupDialog component are shown in Table 10-2

Table 10-2 Important Properties of the PageSetupDialog Component

AllowMargins Indicates whether the margins section of the dialog box

is enabled

AllowOrientation Indicates whether the orientation section of the dialog

box (landscape versus portrait) is enabled

AllowPaper Indicates whether the paper section of the dialog box

(paper source and paper size) is enabled

AllowPrinter Indicates whether the printer button is enabled

Document The PrintDocument associated with this component EnableMetric Indicates whether the margin settings, when displayed

in millimeters, should be automatically converted to and from hundredths of an inch

MinMargins Indicates the minimum margins, in hundredths of an

inch, the user is allowed to select

ShowHelp Indicates whether the Help button is visible

ShowNetwork Indicates whether the Network button is visible

To show a PageSetupDialog, the component must be associated with an instance of the PageSettings class The preferred way of doing this is to set the Document property to

an instance of the PrintDocument class, which automatically sets the PrintDocu­ ment.PrinterSettings instance to the PageSetupDialog.PrinterSettings property The fol­ lowing code example demonstrates how to set the Document property of the PageSetupDialog component and then display it to the user

' VB

' Assumes an instance of PrintDocument named PrintDocument1 and an

' instance of PageSetupDialog named PageSetupDialog1

Trang 18

// C#

The PrintPreviewDialog Component

The PrintPreviewDialog component is a self-contained dialog box that allows you to preview a print document It does so by calling the Print method of the PrintDocument component that is specified in the component’s Document property and redirecting

the output to a graphical representation of the page contained in the dialog box The

PrintDocumentDialog component is shown at run time in Figure 10-3

Figure 10-3 The PrintDocumentDialog component at run time

The dialog box allows the user to view each page before printing, adjust the number

of pages displayed, and adjust the zoom factor so that pages can be viewed close up

or at a distance After viewing the preview, the user can choose to print the document

by clicking the Print button, which calls the Print method of the PrintDocument com­

ponent and directs the output to the printer The following code example demon­

strates how to associate a PrintDocument component with a PrintPreviewDialog

component and display it to the user at run time:

' VB

PrintPreviewDialog1.Document = PrintDocument1

PrintPreviewDialog1.ShowDialog()

Trang 19

// C#

printPreviewDialog1.Document = printDocument1;

printPreviewDialog1.ShowDialog();

Quick Check

1 What is the purpose of the PrintDialog component?

2 What is the purpose of the PrintPreview component?

Quick Check Answers

1 The PrintDialog component represents a Print dialog box, and it allows you

to configure print options for presentation to the user At run time, you can

call the PrintDialog.ShowDialog method to display the Print dialog box to

the user

2 The PrintPreviewDialog component represents a print preview dialog box,

and allows you to configure options for displaying the document to the user prior to actually sending it to the printer

Lab: Use Print Dialogs

In this lab, you will create a simple application that enables the user to use Dialog, PrintDialog, and PrintPreviewDialog to control the printing of a test document

PageSetup-� Exercise 1: Using Print Dialogs

1 Open the partial solution for Chapter 10, Lab 1 from Open Form1 Note that it

already has a PrintDocument component named PrintDocument1 and that there

is code in the event handler for the PrintPage event

2 From the Toolbox, drag a MenuStrip onto the form Add a top-level menu item

named File

3 Beneath the File menu item, add the following menu items: Page Setup, Print,

Print Preview

4 From the Toolbox, drag a PageSetupDialog component, a PrintDialog component,

and a PrintPreviewDialog component onto the form

5 In the Properties window, set the Document property of each dialog component

to PrintDocument1

6 In the Properties window, set the AllowSomePages property of PrintDialog1 to

True

Trang 20

7 In the Designer, double-click PageSetupToolStripMenuItem and add the follow­

10 Press F5 to run your application Choose each of the menu items to demonstrate

how to open the different print dialog boxes

Lesson Summary

The PrintDialog component represents a Print dialog box By setting the Docu­ ment property of a PrintDialog component, you can enable the user to change the print settings for that document The PrintDialog component exposes several

properties that allow you to set what options the user can configure

The PageSetupDialog component represents a Page Setup dialog box By set­ ting the Document property of a PageSetupDialog component, you can enable the user to change the page settings for that document The PageSetup compo­

nent exposes several properties that allow you to set what options the user can configure

The PrintPreviewDialog component represents a Print Preview dialog box The Document property indicates the PrintDocument component that is currently

Trang 21

being previewed The PrintPreviewDialog component allows the user to config­

ure the presentation of the previewed document through buttons in the user interface

Lesson Review

The following questions are intended to reinforce key information presented in this lesson The questions are also available on the companion CD if you prefer to review them in electronic form

2 Which of the following is required to display a PrintDocument in a

PrintPreview-Dialog component? (Choose all that apply.)

A You must set the PrintPreviewDialog.Document property

B You must call the PrintPreviewDialog.Print method

C You must call either the PrintPreviewDialog.Show or the PrintPreviewDialog

.ShowDialog method

D You must raise the PrintPreviewDialog.PrintPages event

3 Which of the following can you not enable a user to do with the PageSetupDialog

component?

A Set the page orientation

B Set the paper tray

C Add a printer

D Set the page margins

Trang 22

Lesson 2: Constructing Print Documents

The PrintDocument component represents a document that is sent to a printer You can use the PrintDocument component to print text documents or graphical docu­ ments In this lesson, you will learn to configure the PrintDocument component and

use it to create printed documents

After this lesson, you will be able to:

Configure the PrintDocument component

■ Print a text document in a Windows Form

■ Print graphics in a Windows Form

Print a document by using the PrintDialog component

■ Alert users to the completion of a print job

Estimated lesson time: 45 minutes

The PrintDocument Component

A printed document is represented by the PrintDocument component It is a compo­

nent that does not have a visual representation at run time but appears in the compo­nent tray at design time and can be dragged from the Toolbox to the design surface

The PrintDocument component encapsulates all of the information necessary to print

a page

Overview of Printing

In the NET Framework printing model, printed content is provided directly by the

application logic A print job is initiated by the PrintDocument.Print method This starts the print job and then raises one or more PrintPage events If there is no client

method to handle this event, printing does not take place By providing a method to handle this event, you specify the content to be printed

If the print job contains multiple pages, one PrintPage event is raised for each page in the job This, in turn, causes the method handling the PrintPage event to execute mul­

tiple times Thus, that method must implement functionality to track the print job and ensure that successive pages of a multipage document are printed Otherwise, the first page of the document will print multiple times

Trang 23

The PrintPage Event

The PrintPage event is the main event involved in printing documents To actually

send content to the printer, you must handle this event and provide code to render

the content in the PrintPage event handler All of the objects and information needed

to send content to the printer are wrapped in the PrintPageEventsArgs object, which is received by the handler for this event Table 10-3 describes the properties of the Print- PageEventArgs object

Table 10-3 Properties of the PrintPageEventArgs Object

Cancel Indicates whether a print job should be cancelled You can

cancel a pending print job by setting the Cancel property to True

Graphics The Graphics object is used to render content to the printed

page Encapsulates the drawing surface represented by the printer

HasMorePages Gets or sets a value that indicates whether additional pages

should be printed Set this property to True in the event han­

dler to raise the event again

MarginBounds Gets the Rectangle object that represents the portion of the

page within the margins

PageBounds Gets the Rectangle object that represents the total page area PageSettings Gets or sets the PageSettings object for the current page

Content is rendered to the printed page by the Graphics object provided in the PageEventArgs object The printed page behaves just like a form, control, or any other drawing surface that can be represented by a Graphics object To render content, you

Print-use the same methods Print-used to render content to a form The following code example demonstrates a simple method to print a page:

' VB

' This method inscribes an ellipse inside the bounds of the page This

' method must handle the PrintPage event in order to send content to the printer

Public Sub PrintEllipse(ByVal sender As System.Object, ByVal e As _

System.Drawing.Printing.PrintPageEventArgs)

e.Graphics.DrawEllipse(Pens.Black, e.MarginBounds)

End Sub

Trang 24

// C#

// This method inscribes an ellipse inside the bounds of the page This

// method must handle the PrintPage event in order to send content to the printer

public void PrintEllipse(object sender, System.Drawing.Printing.PrintPageEventArgs e) {

The MarginBounds and PageBounds properties represent areas of the page surface You

can specify printing to occur inside the margin bounds of the page by calculating

printing coordinates based on the MarginBounds rectangle Printing that is to take

place outside of the margin bounds, such as headers or footers, can be specified by

calculating the printing coordinates based on the PageBounds rectangle Print coordi­

nates are in pixels by default

You can specify that a print job has multiple pages by using the HasMorePages prop­ erty By default, this property is set to False When your application logic determines that multiple pages are required to print a job, you should set this property to True When the last page is printed, the property should be reset to False Note that the method handling the PrintPage event must keep track of the number of pages in the

job Failure to do so can cause unexpected results while printing For example, if you

fail to set the HasMorePages property to False after the last page is printed, the applica­ tion will continue to raise PrintPage events

You can cancel a pending print job without finishing by setting the Cancel property to True You might do this, for example, if the user clicked a Cancel button on your form You can end create an event handler for the PrintPage event by double-clicking the PrintDocument instance in the Designer to create a default event handler

Printing Graphics

Printing graphics is essentially the same as rendering them to the screen You use the

Graphics object supplied by PrintPageEventArgs to render graphics to the screen Sim­

ple shapes can be printed, or complex shapes can be created and printed using the

GraphicsPath object The following code example shows how to print a complex shape with a GraphicsPath object:

' VB

' This method must handle the PrintPage event

Trang 25

End Sub

// C#

// This method must handle the PrintPage event

public void PrintGraphics(object sender, System.Drawing.Printing.PrintPageEventArgs e) {

}

To print a graphics job that has multiple pages, you must manually divide the job among pages and implement the appropriate logic For example, the following method uses twelve pages to draw an ellipse that is six times as long as the page and two times as wide

' VB

' These two variables are used to keep track of which page is printing

Private x As Integer

Private y As Integer

' This method must handle the PrintPages event

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _

Ngày đăng: 07/07/2014, 05:20

TỪ KHÓA LIÊN QUAN