TOC

This article is currently in the process of being translated into Vietnamese (~96% done).

Hộp thoại:

The SaveFileDialog

SaveFileDialog sẽ giúp bạn chọn vị trí và tên tệp khi bạn muốn lưu một tập tin. Nó hoạt động và giống nhiều OpenFileDialog mà chúng tôi sử dụng trong bài viết trước, với một vài sự khác biệt tinh tế. Cũng giống như OpenFileDialog, SaveFileDialog là một wrapper quanh một hộp thoại Windows phổ biến, có nghĩa rằng người dùng của bạn sẽ nhìn thấy khoảng cùng một hộp thoại cho dù chúng bắt đầu nó trong ứng dụng của bạn hoặc ví dụ như trong Notepad.

Ví dụ đơn giản SaveFileDialog

Để bắt đầu những điều này, chúng ta hãy bắt đầu với một ví dụ rất đơn giản về cách sử dụng SaveFileDialog:

<Window x:Class="WpfTutorialSamples.Dialogs.SaveFileDialogSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="SaveFileDialogSample" Height="300" Width="300">
    <DockPanel Margin="10">
        <WrapPanel HorizontalAlignment="Center" DockPanel.Dock="Top" Margin="0,0,0,10">
            <Button Name="btnSaveFile" Click="btnSaveFile_Click">Save file</Button>
        </WrapPanel>
        <TextBox Name="txtEditor" TextWrapping="Wrap" AcceptsReturn="True" ScrollViewer.VerticalScrollBarVisibility="Auto" />
    </DockPanel>
</Window>
using System;
using System.IO;
using System.Windows;
using Microsoft.Win32;

namespace WpfTutorialSamples.Dialogs
{
	public partial class SaveFileDialogSample : Window
	{
		public SaveFileDialogSample()
		{
			InitializeComponent();
		}

		private void btnSaveFile_Click(object sender, RoutedEventArgs e)
		{
			SaveFileDialog saveFileDialog = new SaveFileDialog();
			if(saveFileDialog.ShowDialog() == true)
				File.WriteAllText(saveFileDialog.FileName, txtEditor.Text);
		}
	}
}

Như bạn thấy, nó là chủ yếu là về khởi tạo SaveFileDialog và sau đó gọi phương thức ShowDialog() . Nếu nó trả về đúng, chúng tôi sử dụng là thuộc tính FileName (mà sẽ chứa các đường dẫn đã chọn cũng như các tên tập tin người dùng nhập vào) như là con đường để viết nội dung của chúng tôi.

Nếu bạn nhấp vào lưu nút, bạn sẽ thấy một hộp thoại như thế này, tùy thuộc vào phiên bản Windows bạn đang sử dụng:

Filter

Như bạn có thể nhìn thấy từ ví dụ đầu tiên, tôi tự thêm vào một phần mở rộng .txt tên tập tin mong muốn của tôi, chủ yếu là vì "Save as type" combo box là sản phẩm nào. Cũng giống như cho OpenFileDialog, hộp này được điều khiển thông qua các thuộc tính Filter , và nó cũng được sử dụng trong cùng một cách chính xác.

saveFileDialog.Filter = "Text file (*.txt)|*.txt|C# file (*.cs)|*.cs";

Để biết thêm chi tiết về định dạng của các tài sản bộ lọc, hãy xem bài viết trước đó trên OpenFileDialog, nơi nó được giải thích chi tiết.

With a filter like the above, the resulting SaveFileDialog will look like this instead:

Với vị trí đó, bạn có thể viết tên tập tin mà không có chỉ định phần mở rộng - nó sẽ được thực hiện từ các loại tập tin đã chọn trong hộp combo bộ lọc để thay thế. Điều này cũng chỉ ra cho người dùng định dạng tập tin của bạn hỗ trợ ứng dụng, mà tất nhiên là quan trọng.

Thiết lập Initialdirectory (thư mục khi khởi động savefiledialog nó sẽ mở thư mục này đầu tiên)

Thư mục ban đầu được sử dụng bởi SaveFileDialog được quyết định bởi Windows, nhưng bằng cách sử dụng các thuộc tính InitialDirectory , bạn có thể ghi đè lên nó. Bạn sẽ thường đặt giá trị này để người dùng được chỉ định thư mục, thư mục ứng dụng hoặc có lẽ chỉ cần vào thư mục cuối được sử dụng nhất. Bạn có thể đặt nó vào một con đường trong một định dạng chuỗi, như thế này:

saveFileDialog.InitialDirectory = @"c:\temp\";

Nếu bạn muốn sử dụng một trong các thư mục đặc biệt trên Windows, ví dụ như máy tính để bàn, tài liệu của tôi hoặc các thư mục tập tin chương trình, bạn phải chăm sóc đặc biệt, vì chúng có thể khác nhau từ mỗi phiên bản của Windows và cũng phụ thuộc vào người dùng được đăng nhập. .NET framework có thể giúp bạn mặc dù, chỉ cần sử dụng môi trường lớp học và các thành viên để đối phó với thư mục đặc biệt:

saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

Trong trường hợp này, tôi nhận được đường dẫn cho thư mục My Documents, nhưng có một cái nhìn tại liệt kê SpecialFolder - nó chứa các giá trị cho rất nhiều điều thú vị đường dẫn. Để biết danh sách đầy đủ, vui lòng xem MSDN article

Tùy chọn

Bên cạnh các tùy chọn đã được đề cập trong bài viết này, tôi muốn hướng sự chú ý của bạn với các thuộc tính sau đây sẽ giúp bạn chỉnh sửa SaveFileDialog nhu cầu của bạn:

AddExtension - mặc định để true và xác định nếu SaveFileDialog nên sẽ tự động nối thêm một phần mở rộng tên tập tin, nếu người dùng bỏ qua nó. Phần mở rộng sẽ được dựa trên các bộ lọc được lựa chọn, trừ khi đó là không thể, trong trường hợp nó sẽ rơi trở lại DefaultExt tài sản (nếu được chỉ định). Nếu bạn muốn các ứng dụng của bạn để có thể lưu các tập tin mà không có phần mở rộng tệp, bạn có thể phải vô hiệu hóa tùy chọn này.

OverwritePrompt - mặc định để true và xác định nếu SaveFileDialog nên yêu cầu xác nhận, nếu người dùng nhập vào một tên tập tin sẽ kết quả trong một tập tin hiện đang được ghi đè. Bạn thường sẽ muốn bỏ tùy chọn này cho phép ngoại trừ trong trường hợp rất đặc biệt.

Title bạn có thể ghi đè lên các thuộc tính này nếu bạn muốn có một tiêu đề tùy chỉnh trên hộp thoại của bạn. Nó mặc định để "Save As" hoặc tương đương với địa phương và các tài sản cũng là hợp lệ cho OpenFileDialog.

ValidateNames - mặc định để true và trừ khi nó bị vô hiệu hóa, nó sẽ đảm bảo rằng người dùng nhập vào chỉ hợp lệ cửa sổ tên tập tin trước khi cho phép người dùng để tiếp tục.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!