Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C# 2008 Step by Step.pdf
Скачиваний:
26
Добавлен:
25.03.2016
Размер:
13.96 Mб
Скачать

468

Part IV Working with Windows Applications

Windows Common Dialog Boxes

The Bell Ringers application now lets you save member information, but it always saves data to the same file, overwriting anything that is already there. Now is the time to address this issue.

A number of everyday tasks require the user to specify some sort of information. For example, if the user wants to open or save a file, the user is usually asked which file to open or where to save it. You might have noticed that the same dialog boxes are used by many different applications. This is not a result of a lack of imagination by applications developers; it is just that this functionality is so common that Microsoft has standardized it and made

it available as a “common dialog box”—a component supplied with the Microsoft Windows

operating system that you can use in your own applications. The Microsoft .NET Framework class library provides the OpenFileDialog and SaveFileDialog classes, which act as wrappers

for these common dialog boxes.

Using the SaveFileDialog Class

In the following exercise, you will use the SaveFileDialog class. 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 displaying the Save File common dialog box.

Use the class

1.In the Code and Text Editor window displaying Window1.xaml.cs, add the following using statement to the list at the top of the file:

using Microsoft.Win32;

The SaveFileDialog class is in the Microsoft.Win32 namespace.

2.Locate the saveMember_Click method, and add the code shown in bold type to the start of this method, replacing YourName with the name of your own account:

private void saveMember_Click(object sender, RoutedEventArgs e)

{

SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.DefaultExt = “txt”; saveDialog.AddExtension = true; saveDialog.FileName = “Members”;

saveDialog.InitialDirectory = @”C:\Users\YourName\Documents\”; saveDialog.OverwritePrompt = true;

saveDialog.Title = “Bell Ringers”; saveDialog.ValidateNames = true;

...

}

Chapter 23 Working with Menus and Dialog Boxes

469

Note If you are using Windows XP, replace the statement that sets the InitialDirectory property of the saveDialog object with the following code:

saveDialog.InitialDirectory = @”C:\Documents and Settings\YourName\My Documents\”;

This code creates a new instance of the SaveFileDialog class and sets its properties. The following table describes the purpose of these properties.

Property

Description

DefaultExt

The default file name extension to use if the user does not

 

specify the extension when providing the file name.

 

 

AddExtension

Enables the dialog box to add the file name extension

 

indicated by the DefaultExt property to the name of the

 

file specified by the user if the user omits the extension.

 

 

FileName

The name of the currently selected file. You can populate

 

this property to specify a default file name, or clear it if

 

you don’t want a default file name.

 

 

InitialDirectory

The default directory to be used by the dialog box.

 

 

OverwritePrompt

Causes the dialog box to warn the user 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

A string that is displayed on the title bar of the dialog box.

ValidateNames

Indicates whether file names are validated. It is used by

 

some other properties, such as OverwritePrompt. If the

 

ValidateNames property is set to true, the dialog box

 

also checks to verify that any file name typed by the user

 

contains only valid characters.

3.Add the following statements shown in bold type to the saveMember_Click method, and enclose the previous code that creates the StreamWriter object and writes the member details to a file in an if statement:

if (saveDialog.ShowDialog().Value)

{

using (StreamWriter writer = new StreamWriter(“Members.txt”))

{

// existing code

...

}

}

The ShowDialog method displays the Save File dialog box. The Save File dialog box is modal, which means that the user cannot continue using any other forms in the

470 Part IV Working with Windows Applications

application until she has closed this dialog box by clicking one of its buttons. The Save File dialog box has a Save button and a Cancel button. If the user clicks Save, the value returned by the ShowDialog method is true; otherwise, it is false.

The ShowDialog method 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. All it does is provide the name of the file that the user has selected in the FileName property.

4.In the saveMember_Click method, modify the statement that creates the StreamWriter object as shown in bold type here:

using (StreamWriter writer = new StreamWriter(saveDialog.FileName))

{

...

}

The saveMember_Click method will now write to the file specified by the user rather than to Members.txt.

5.On the Debug menu, click Start Without Debugging to build and run the application.

6.On the File menu, click New Member, and then add some details for a new member.

7.On the File menu, click Save Member Details.

The Save File dialog box should appear, with the caption “Bell Ringers.” The default folder should be your Documents folder, and the default file name should be Members, as shown in the following image:

If you omit the file name extension, .txt is added automatically when the file is saved. If you pick an existing file, the dialog box warns you before it closes.

8.Change the value in the File name text box to TestMember, and then click Save.

9.In the Bell Ringers application, verify that the “Member details saved” message appears, click OK, and then close the application.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]