![](/img/trans.png)
[英]Hiding hidden documents and excluding file extensions from a directory in C#
[英]Excluding file extensions from open file dialog in C#
我正在嘗試在我的 C# openFileDialog 上放置一個過濾器,以排除某些文件擴展名。 例如,我希望它顯示目錄中不是 .txt 文件的所有文件。
有沒有辦法做到這一點?
我不認為這是可能的。 過濾器的設置方式是您可以選擇要顯示的文件,但我認為沒有辦法顯示“除...之外的所有文件”。 想想看,你有沒有在 Windows 中看到一個打開文件對話框有這個? 我想我從來沒有見過一個。
最好的辦法是讓他們選擇所有文件,然后提示用戶是否選擇了不允許的文件,或者將其過濾為您可以處理的所有可能文件。
使用 BCL OpenFileDialog 沒有直接的方法來做到這一點。
我可以想到幾個選項:
1) 制作一個只包含您想要支持的所有類型的過濾器。 這將是我的建議,因為這是進行此類操作的最常見方式。
2) 使用與此自定義 OpenFileDialog 實現類似的內容。 如果所選文件具有 .txt 擴展名,則您可以覆蓋 OnFileNameChanged() 方法以潛在地禁用“打開”按鈕。
3) 讓用戶選擇一個 .txt 文件,拋出一個錯誤對話框,然后重新打開文件對話框。 不過,這對我來說感覺很笨重而且不太好......
通過 Google 搜索“OpenFileDialog”找到
編輯:很抱歉沒有擴展 EXCLUDE 方面。 你可能不需要走到這個極端,但它會滿足你的需求......
恐怕這是不可能的。 你要么必須
a) 包括一長串應該允許的所有擴展名,或
b) 允許所有擴展名,然后使用簡單的簽入代碼,如果所選文件的擴展名是.txt
則重新打開對話框。
另外,您能否為這個問題提供更多背景信息? 我無法設想我可能明確需要排除某個擴展名的場景。 在幾乎所有情況下,您可能無法僅使用過濾器(可能還有一些代碼檢查)就可以逃脫。
這是一種完全不同的方法,您不太可能使用它。
不使用 OpenFileDialog,而是分析您需要的特定功能並創建您自己的對話框。 您可以輕松地提供您想要的任何過濾,但隨后困難就轉移到了實現和維護新 UI 上。
我不建議你這樣做,但有時用戶會非常堅持他們需要什么。
另一個替代方案:不要使用對話框,而是想出一些完全不同的、適合應用程序的東西。 這可能是不可能的,但是我們對該應用程序了解不多。
您不能設置過濾器以從文件對話框中排除擴展名。
但是,您可以在對話框上為FileOk
事件實現一個委托。 此事件在用戶選擇的文件被接受之前觸發,事件參數提供了一個Cancel
屬性,您可以將其設置為禁止選擇。
它不像實際上使錯誤的文件不可見那樣優雅,但它允許您禁止選擇錯誤類型的文件。
PS:不要忘記給用戶反饋為什么文件不被接受,否則他們可能想知道為什么在選擇“txt”文件時對話框沒有關閉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.