OpenFileDialog
を使用してインポートするファイルを取得するC# .NET 3.5 プログラムがあります。2 つのフィルター (*Domain*.*
および*.*
) があり、*Domain*.*
が として選択されますFilterIndex
。内でファイルを変更すると、フィルターからファイルが消えるケースが見られますOpenFileDialog
。
ユーザーが問題を再現するために実行する手順は次のとおりです。
- プログラムで、 を開きます
OpenFileDialog
。フィルタが に設定されていることを確認し*Domain*.*
ます。 - フィルターに一致するディレクトリー内のファイルを見つけて、フィルターに一致しないようにファイル名を変更します。注: ファイルは消えます。
- すべてのファイルを表示するようにフィルターを変更します
*.*
。注: ファイルが表示されているはずですが、ファイルはリストされていません*.*
。
この時点で、Windows エクスプローラーでフォルダーを開くと、名前が変更されたファイルが存在することがわかります。ただし、 では、OpenFileDialog
使用されているフィルタに関係なく表示されなくなりました。そのファイルを再度表示する唯一の方法は、 を閉じてから再度OpenFileDialog
開くことです。
を作成する私のコードは次のとおりOpenFileDialog
です。
using(OpenFileDialog domainFileDialog = new OpenFileDialog())
{
domainFileDialog.CheckFileExists = true;
domainFileDialog.CheckPathExists = true;
domainFileDialog.Filter = "Domain Files (*Domain*.*)|*Domain*.*|All files (*.*)|*.*";
domainFileDialog.FilterIndex = 1;
domainFileDialog.Multiselect = false;
domainFileDialog.RestoreDirectory = true;
domainFileDialog.ShowReadOnly = true;
domainFileDialog.SupportMultiDottedExtensions = true;
domainFileDialog.Title = "Choose the Domain File to Import...";
domainFileDialog.ValidateNames = true;
\\ Perform Import functionality...
}
を開き、OpenFileDialog
より制限の厳しいフィルターに一致する既存のファイルを変更して、フィルターに一致しないようにすると、すべてのファイルが表示されている場合でも、ファイル*.*
が表示されなくなります。
なぜこれが起こっているのかわからないので(そしてそれを修正する方法についての提案をお待ちしています)、OpenFileDialog
この問題を防ぐために、ユーザーがファイルを作成または変更することを制限する方法はありますか?