2012-08-24 33 views
10

Tôi nhận được ứng dụng biểu mẫu C# windows này khi tôi tải một tệp XML hoặc tệp CSV cho một số thao tác tác vụ. Tôi có một nút Duyệt. Khi tôi nhấp vào nút Duyệt qua, hộp thoại Mở Tệp Thoại xuất hiện và tôi có thể điều hướng đến một vị trí trên ổ đĩa của tôi và chọn tệp rồi tải lên bằng cách sử dụng nút Tải lên. Nếu tôi tải tệp JPG hoặc tệp ZIP hoặc bất kỳ tệp nào có định dạng ngoại trừ CSV hoặc XML, ứng dụng của tôi sẽ gặp sự cố. Có cách nào hạn chế hộp thoại Open File Dialog để chỉ mở các tệp CSV hoặc XMl trong C# không?Giới hạn các tập tin có thể được chọn bằng hộp thoại Open FIle

+0

tại sao bạn không xác thực tiện ích trước khi tải lên? –

Trả lời

23

sử dụng

openFileDialog.Filter = "CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml"; 

cách này chỉ file csv hoặc file xml được hiển thị. nhưng người dùng cũng có thể chọn các loại tệp khác nếu họ nhập tên đầy đủ - vì vậy hãy kiểm tra tên tệp đã được chọn và sửa mã của bạn cho phù hợp.

+0

super one dude :)) – user1501034

+2

Bạn cũng có thể kết hợp các bộ lọc để người dùng có thể xem cả tệp csv và xml, như sau: openFileDialog.Filter = "Data files | * .csv; *. Xml"; – sventevit

0

Bạn có thể sử dụng thuộc tính Filter để cho phép người dùng chọn một loại tệp nhất định.

Tuy nhiên! Đây không phải là một sự đảm bảo. Người dùng vẫn có thể nhập '(dấu sao). (Dấu sao)' vào hộp tên tệp và hiển thị tất cả các tệp. Vì vậy, bạn nên kiểm tra (các) tệp kết quả trong mã của mình.

Bạn có thể thực hiện việc này bằng phương pháp Path.GetExtension().

0

Bạn có thể áp dụng bộ lọc trong hộp thoại Mở tệp chỉ hiển thị tệp .xml và csv như đã đề cập ở trên. Với path.getextension http://msdn.microsoft.com/en-us/library/system.io.path.getextension.aspx Bạn có thể kiểm tra xem người dùng có thực sự đã chọn tệp có phần mở rộng phù hợp hay không. Nếu một phần mở rộng sai được chọn, bạn có thể nhắc chọn một tập tin khác.

Tôi thực sự khuyên bạn nên kiểm tra phần mở rộng tệp trước khi tải lên. Chỉ cần kiểm tra phần mở rộng sau khi người dùng đã chọn tập tin. Nếu các tệp sai được chọn, chỉ cần không tiếp tục quá trình tải lên/xử lý ...

0

Đây là ví dụ hoàn chỉnh.

/// <summary> 
    /// Select CSV/XML file 
    /// </summary> 
    /// <param name="sender"> 
    /// The sender. 
    /// </param> 
    /// <param name="e"> 
    /// The e. 
    /// </param> 
    private void SelectCsvFile(object sender, EventArgs e) 
    { 
     var dlg = new OpenFileDialog 
         { 
          Filter = @"CSV files (*.csv)|*.csv|XML files (*.xml)|*.xml", 
          CheckFileExists = true, 
          Title = @"Select csv/xml file to read", 
          Multiselect = false 
         }; 
     dlg.ShowDialog(); 
     if (dlg.FileName == string.Empty) 
     { 
      MessageBox.Show(
       @"You didn't select any file !", 
       @"No file was selected", 
       MessageBoxButtons.OK, 
       MessageBoxIcon.Asterisk); 
     } 
     else 
     { 
      this.txtCSVFilePath.Text = dlg.FileName; 
     } 
    } 
Các vấn đề liên quan