[英]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.