Tôi đang cố gắng thực hiện SaveFileDialog
và FileOpenDialog
thi hành phần mở rộng cho tên tệp được người dùng nhập. Tôi đã thử bằng cách sử dụng mẫu đề xuất trong question 389070 nhưng nó không hoạt động như mong đợi:System.Windows.Forms.SaveFileDialog không thực thi phần mở rộng mặc định
var dialog = new SaveFileDialog())
dialog.AddExtension = true;
dialog.DefaultExt = "foo";
dialog.Filter = "Foo Document (*.foo)|*.foo";
if (dialog.ShowDialog() == DialogResult.OK)
{
...
}
Nếu sử dụng các loại văn bản test
trong một thư mục, nơi một tập tin test.xml
xảy ra để tồn tại, hộp thoại sẽ gợi ý tên test.xml
(trong khi tôi thực sự chỉ muốn xem *.foo
trong danh sách). Tồi tệ hơn: nếu người dùng chọn test.xml
, thì tôi thực sự sẽ nhận được test.xml
làm tên tệp đầu ra.
Làm cách nào để đảm bảo rằng SaveFileDialog
thực sự chỉ cho phép người dùng chọn tệp *.foo
? Hoặc ít nhất, nó thay thế/thêm phần mở rộng khi người dùng nhấp vào Save
?
Các giải pháp được đề xuất (thực hiện xử lý sự kiện FileOk
) chỉ thực hiện một phần công việc, vì tôi thực sự muốn vô hiệu hóa nút Save
nếu tên tệp có phần mở rộng sai.
Để ở lại trong hộp thoại và cập nhật tên tập tin được hiển thị trong hộp văn bản trong xử lý FileOk
, để phản ánh tên tập tin mới với phần mở rộng đúng, xem following related question.
Tôi không chắc chắn, nhưng bạn có thể thử đặt multipleDottedExtensions thành True, có thể điều này sẽ thay đổi hành vi đó. – Bobby
Không, điều này không thay đổi gì cả; nhưng cảm ơn cho gợi ý. –