簡體   English   中英

保存文件對話框,限制名稱

[英]Save File Dialog , restrict name

我的程序有一個保存文件選項,如下所示:

        //Browse for file
        SaveFileDialog ofd = new SaveFileDialog();
        ofd.Filter = "CSV|*.csv";
        ofd.DefaultExt = ".csv";

        DialogResult result = ofd.ShowDialog();
        string converted = result.ToString();

        if (converted == "OK")
        {
            Master_Inventory_Export_savePath.Text = ofd.FileName;
        }

如果我將文件名寫為“example”,它會正確保存為.csv但是如果我將名稱設置為“example.txt”它保存為文本文件,我看了msdn等,但即使設置默認擴展名也沒有不要這樣做,關於如何只保存.csv文件的任何想法?

您可以使用FileOk事件來檢查用戶輸入的內容,如果輸入了您不喜歡的內容,則拒絕輸入。

例如:

SaveFileDialog sdlg = new SaveFileDialog();
sdlg.FileOk += CheckIfFileHasCorrectExtension;
sdlg.Filter = "CSV Files (*.csv)|*.csv";
if(sdlg.ShowDialog() == DialogResult.OK)
    Console.WriteLine("Save file:" + sdlg.FileName);

 void CheckIfFileHasCorrectExtension(object sender, CancelEventArgs e)
 {
     SaveFileDialog sv = (sender as SaveFileDialog);
     if(Path.GetExtension(sv.FileName).ToLower() != ".csv")
     {
         e.Cancel = true;
         MessageBox.Show("Please omit the extension or use 'CSV'");
         return;
     }
 }

這種方法的主要優點是你的SaveFileDialog沒有被解雇,如果出現問題,你可以檢查輸入而不重新加載SaveFileDialog。

注意,如果SaveFileDialog無法識別您的用戶輸入的擴展名,則會自動附加您的擴展程序。 這意味着如果您的用戶鍵入somefile.doc則SaveFileDialog不會附加.CSV擴展名,因為.DOC擴展名可能在操作系統中是眾所周知的。 但是,如果您的用戶鍵入somefile.zxc那么您將收到一個名為somefile.zxc.csv的FileName作為輸出(以及FileOk事件中)

你能不能只通過在最后一段代碼中這樣強制.csv文件類型?

if (converted == "OK")
{
    if (ofd.FileName.toString.EndsWith(".csv")<1)
    {
     Master_Inventory_Export_savePath.Text = ofd.FileName + ".csv";
    }
    else
    {
    Master_Inventory_Export_savePath.Text = ofd.FileName;
    }
}

注意 - 未經測試,但應該給你一個起點....

將屬性AddExtension設置為true

ofd.AddExtension = true;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM