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

Dialog Print A File ppt

7 218 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Using Common Dialog Controls
Trường học Standard University
Chuyên ngành Computer Science
Thể loại Học phần
Thành phố City Name
Định dạng
Số trang 7
Dung lượng 28,48 KB

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

Nội dung

Using Common Dialog Controls The Bell Ringers application now allows you to save information, but it always saves data to the same file, overwriting anything that is already there.. For

Trang 1

Using Common Dialog Controls

The Bell Ringers application now allows you to save information, but it always saves data to the same file, overwriting anything that is already there Also, the print

functionality is still missing Now is the time to address these issues

There are a number of everyday tasks that require the user to specify some sort of

information For example, if the user wants to print a file, the user is usually asked which printer to use, and the user can set additional properties such as the number of copies You might have noticed that the same Print dialog box is used by many different

applications This is not due to lack of imagination by applications developers; it is just that the requirement is so common that Microsoft has standardized it and made it

available as a “common dialog”—a component supplied with the Microsoft Windows operating system that you can use in your own applications

There are a number of other common dialog boxes available as well, including dialog boxes for opening and saving files, selecting colors and fonts, specifying page formats, and performing print previews You can use any of these common dialog boxes in Visual Studio 2005 through the common dialog controls

Using the SaveFileDialog Control

In the following exercise, you will use the SaveFileDialog control In the BellRingers application, when the user saves details to a file you will prompt the user for the name and location of the file by using a SaveFileDialog control

Use a SaveFileDialog control

1 Display MemberForm in the Design View window

2 In the Toolbox, expand the Dialogs category

3 Drag a SaveFileDialog control onto the form

The control appears under the form and is given the name saveFileDialog1

4 Click the saveFileDialog1 control In the Properties window, set its properties by using the values specified in the following table

Property Value Description

(Name) saveFileDialog The name of the control

AddExtension True Setting this property to True allows the dialog

box to add the file extension indicated by the

Trang 2

Property Value Description

DefaultExt property to the name of the file specified by the user if the user omits the file extension

DefaultExt txt

The default file extension to use if the user does not specify the extension when providing the filename

FileName Leave blank

The name of the currently selected file Delete the value if you don't want a file to be selected

by default

InitialDirectory C:\ The default directory to be used by the dialog

box

OverwritePrompt True

If this property is True, the user is warned when

an attempt is made to overwrite an existing file with the same name For this to work, the ValidateNames property must also be set to True

Title Bell Ringers A string that is displayed on the title bar of the

dialog box

ValidateNames True

This property indicates whether filenames are validated It is used by some other properties, such as OverwritePrompt If this property is set

to True, the dialog box also checks to verify that any filename typed in by the user contains only valid characters

5 In the Code And Text Editor window displaying MemberForm.cs, locate the saveMemberClick method at the end of the file

6 Type the following statements at the start of this method, surrounding the code that creates and uses the StreamWriter object:

7 DialogResult buttonClicked = saveFileDialog.ShowDialog();

8 if (buttonClicked.Equals(DialogResult.OK))

9 {

10 StreamWriter writer = new StreamWriter("Members.txt"); // existing code

11

12 MessageBox.Show("Member details saved", "Saved"); // existing code

}

13 The first statement displays the Save File dialog box by using the ShowDialog method The Save File dialog box is modal, which means that the user cannot continue using any other forms in the application until she has closed this dialog

Trang 3

box by clicking one of its buttons Modal dialog boxes also have a DialogResult property that indicates which button the user clicked (the Save dialog has a Save button and a Cancel button) The ShowDialog method returns the value of this DialogResult property; if the user clicks Save, the DialogResult property will be

OK (not Save because there is no such DialogResult value)

IMPORTANT

The SaveFileDialog control prompts the user for the name of a file to save to, but does not actually do any saving—you still have to supply that code yourself

14 Modify the statement that creates the StreamWriter object:

StreamWriter writer = new StreamWriter(saveFileDialog.FileName);

The method will now write to the file specified by the user rather than

Members.txt

15 Build and run the application Create a new member On the File menu, click Save Member The Bell Ringers dialog box opens and you are asked for the name of the file you want to save If you omit the file extension, “.txt” is added automatically when the file is saved If you pick an existing file, the dialog box warns you before

it closes

16 When you have finished, close the application

You can use a similar technique for opening a file; add an OpenFileDialog control to the form, invoke it by using the ShowDialog method, and retrieve the FileName property when the method returns if the user has clicked the Open button You can then open the file, read its contents, and populate the fields on the screen

For more details on using the OpenFileDialog control, consulting the MSDN Library for Visual Studio 2005

Using a Printer

Printing is another common requirement of professional Windows applications Visual Studio provides controls that can help you send data to a printer very quickly and easily One of these controls is another Common Dialog that allows the user to specify the

printer to use Additionally, the PrintDocument control allows the programmer to

manipulate the data being sent to the printer

In the final exercise in this chapter, you will implement the Print menu command, making use of the PrintDialog and PrintDocument controls

Use a PrintDialog control

Trang 4

1 Display MemberForm in the Design View window

2 In the Toolbox, expand the Printing category

3 Drag a PrintDialog control onto the form

The control appears under the form and is given the name printDialog1

4 Click the printDialog1 control In the Properties window, change the (Name) property to printDialog

5 On MemberForm, click the File menu, and then click Print

6 Click the Events button in the Properties window Select the Click event, type printClick, and then press Enter

7 In the Code And Text Editor window, add the following statements to the

printClick method:

8 DialogResult buttonClicked = printDialog.ShowDialog();

9 if (buttonClicked.Equals(DialogResult.OK))

10 {

11 // You will write this code shortly

}

This is the same idiom that you saw earlier, when using the SaveFileDialog

control

Use a PrintDocument control

1 Return to the Design View window

2 Click and drag a PrintDocument control from the Printing category in the Toolbox onto MemberForm

Another control appears under the form, called printDocument1

3 Using the Properties window, change the name of this control to printDocument Clear the DocumentName property

4 Click the printDialog control In the Properties window, set the Document

property of this control to printDocument This is necessary as the printDialog control uses the printDocument control to obtain printer settings

5 Switch back to the Code And Text Editor displaying MemberForm.cs, and return

to the printClick method

6 Replace the comment in the middle of this method with the following statement: printDocument.Print();

Trang 5

This statement starts the printing process on the selected printer However, you still need to do some work; you must format the data to be printed by using the PrintPage event of the printDocument control

7 In the Design View window, click the printDocument control Click the Events button in the Properties window Select the PrintPage event, type printPage, and then press Enter

8 In the Code And Text Editor window, add the following statements to the

printPage method:

9 StringBuilder data = new StringBuilder();

10

11 StringWriter writer = new StringWriter(data);

12 writer.WriteLine("First Name: " + firstName.Text);

13 writer.WriteLine("Last Name: " + lastName.Text);

14 writer.WriteLine("Tower: " + towerNames.Text);

15 writer.WriteLine("Captain: " + isCaptain.Checked);

16 writer.WriteLine("Member Since: " + memberSince.Text);

17 writer.WriteLine("Methods: ");

18 foreach (object methodChecked in methods.CheckedItems)

19 {

20 writer.WriteLine(methodChecked.ToString());

21 }

writer.Close();

You should recognize much of this code as it is very similar to the logic used when saving a member's data to a file

The StringWriter class is another stream-oriented class, much like StreamWriter that you saw earlier in this chapter It supports many of the same methods and properties The only real difference is that it sends its data to a StringBuilder object rather than a file

The StringBuilder class provides a very efficient way for creating and

manipulating strings It has many of the same features as the string type, but also allows you to easily add and remove characters in a string

By the end of this block of code, the data variable contains the information ready

to be sent to the printer

NOTE

In the NET Framework and C#, the string data type is immutable; when you modify the value in a string, the runtime actually creates a new string containing the modified value, and then discards the old string Repeatedly modifying a string

Trang 6

can cause your code to become inefficient as a new string has to be created in memory at each change (the old string will eventually be garbage collected) The StringBuilder class, in the System.Text namespace, is designed to avoid this

inefficiency You can add and remove characters from a StringBuilder object using the Append, Insert, and Remove methods without creating a new object each time

22 Append the following statements to the end of the printPage method:

23 float leftMargin = e.MarginBounds.Left;

24 float topMargin = e.MarginBounds.Top;

25 float yPos = 0;

26 Font printFont = null;

27

28 printFont = new Font("Arial", 12);

29 yPos = topMargin + printFont.GetHeight(e.Graphics);

30 e.HasMorePages = false;

31 e.Graphics.DrawString(data.ToString(), printFont, Brushes.Black,

leftMargin, yPos, new StringFormat());

This block of code sends the contents of the data variable to the printer The page

is printed using the Arial font (you can specify any font and size that is installed

on your computer) The margins of the document are determined by using the bounds specified by the PrintPageEventArgs parameter passed to the method

The line that actually sends the data to the printer is the DrawString statement You can experiment with different values for the parameters The code shown above outputs a simple page of text If you are feeling adventurous, you can add a page header and footer, and graphics to the output

32 Build and run the application Create a new member

33 On the File menu, click Print The Print dialog box appears Select a printer and then click Print

A message box appears while the data is formatted and printed

34 When you have finished, close the application

• If you want to continue to the next chapter

Keep Visual Studio 2005 running and turn to Chapter 22

• If you want to exit Visual Studio 2005 for now

Trang 7

On the File menu, click Exit If you see a Save dialog box, click Yes

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

TỪ KHÓA LIÊN QUAN