2010-11-08 31 views
8

Tôi có một SaveFileDialog với tùy chọn lưu với loại .foo hoặc .bar. Mục đầu tiên trong danh sách và được chọn theo mặc định là .foo. Tên tệp mặc định là "không có tiêu đề" và tiện ích mở rộng mặc định là ".foo". Khi SaveFileDialog xuất hiện, nó đặt "không có tiêu đề" trong hộp văn bản tên tập tin. Tôi có thể thay đổi nó thành "untitled.foo" nhưng nó vẫn không thay đổi hành vi liên quan đến vấn đề của tôi:Thay đổi phần mở rộng của tệp khi người dùng thay đổi Lưu dưới dạng Lưu dưới dạng SaveFileDialog

Nếu người dùng chuyển sang .bar, làm cách nào để đổi tên tệp thành untitled.bar? Chỉ có hai sự kiện, không phải là sự kiện mà tôi muốn, và nó dường như không thay đổi.

+0

tôi đang gặp vấn đề tương tự, tôi tự hỏi, nếu nó là một vấn đề win32 trong win xp, nó không thêm phần mở rộng là tốt và tôi có thể không có ý tưởng mà phần mở rộng người dùng đã chọn. – shabby

+0

Bạn có thể sử dụng SaveFileDialog.Filter hoặc SaveFileDialog.FilterIndex để truy xuất thông tin bạn cần. –

+0

Nó chỉ xảy ra với tôi những gì tôi nghĩ là vấn đề ở đây. Bạn có nhiều khả năng có "Ẩn tiện ích mở rộng cho các loại tệp đã biết" được bật trong Tùy chọn thư mục của Windows. Khi được chọn, nó sẽ không hiển thị các phần mở rộng trong SaveFileDialog, mặc dù nó sẽ lưu với phần mở rộng. Đó có phải là những gì đang xảy ra với bạn? – BeemerGuy

Trả lời

5

Ed,
Tôi vừa thử nghiệm và nó hoạt động tốt.
Tôi đã làm điều này:

 SaveFileDialog sfd = new SaveFileDialog(); 

     sfd.FileName = "untitled"; 
     sfd.Filter = "Text (*.txt)|*.txt|Word Doc (*.doc)|*.doc"; 
     sfd.ShowDialog(); 

Và nó tự động thay đổi đề nghị tiết kiệm tên tùy thuộc vào bộ lọc tôi chọn.
Tôi đã sử dụng khung công tác .NET 2.0.
Nhưng tôi đang sử dụng Windows 7, điều mà tôi nghĩ là quan trọng, vì bạn thấy hộp thoại lưu tập tin của hệ thống, và cách nó được thực hiện là những gì quan trọng ở đây.

+0

Vâng, chắc chắn có vẻ như nó không hoạt động trong XP. Trong thực tế, đánh giá ban đầu của tôi là sai; nó không phụ thêm phần mở rộng của tập tin. Nó chỉ hiển thị là "không có tiêu đề" –

0

Khi bạn thực sự lưu tệp, bạn có thể lấy tên tệp từ hộp thoại, sau đó thực hiện thao tác chuỗi cần thiết từ đó. Tên tệp là thành viên của phiên bản SaveFileDialog

+0

Đây là một điều UI. Tôi biết tôi có thể thêm phần mở rộng tập tin, nhưng tôi muốn người dùng thấy phần mở rộng tập tin thay đổi. –

+0

mã khỉ quá xấu, ngoài đối số của marty ed, nếu bạn muốn lưu tệp theo cách khác tùy thuộc vào phần mở rộng mà người dùng chọn? – shabby

1

Thêm DefaultExt và AddExtension sẽ cung cấp cho bạn hành vi bạn đang tìm kiếm. Simialr đặt câu hỏi/câu trả lời cung cấp ở đây: https://stackoverflow.com/a/1213353/101971

 var saveFileDialog = new SaveFileDialog 
           { 
            Filter = "Foo (*.foo)|*.foo|Bar (*.bar)|*.bar", 
            DefaultExt = "foo", 
            AddExtension = true 
           }; 
0

Bạn có thể làm: savefiledialog1.AddExtension = True

+0

Điều này không giải quyết được vấn đề cụ thể của tôi, đó là thay đổi tên tệp được hiển thị trong hộp lưu. –

Các vấn đề liên quan