web-dev-qa-db-ja.com

[ファイルを開く]ダイアログボックスを使用して選択できるファイルを制限する

このC#Windowsフォームアプリケーションを入手しました。このアプリケーションでは、いくつかのタスク操作のためにXMLファイルまたはCSVファイルをロードします。参照ボタンがあります。 [参照]ボタンをクリックすると、[ファイルを開く]ダイアログボックスが表示され、ドライブ上の場所に移動してファイルを選択し、[アップロード]ボタンを使用してアップロードできます。 JPGまたはZipファイル、あるいはCSVまたはXML以外の形式のファイルをロードすると、アプリケーションがクラッシュします。 [ファイルを開く]ダイアログボックスをC#でCSVまたはXMlファイルのみを開くように制限する方法はありますか?

13
user1501034

使用する

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

この方法では、csvファイルまたはxmlファイルのみが表示されます。ただし、完全な名前を入力すれば、ユーザーは他のファイルタイプを選択することもできます。選択したファイル名を確認し、それに応じてコードを修正してください。

29

Filter プロパティを使用して、ユーザーが特定の種類のファイルを選択できるようにすることができます。

しかしながら!これは保証ではありません。ユーザーは引き続きファイル名ボックスに「(star)。(star)」と入力して、すべてのファイルを表示できます。したがって、コード内の結果のファイルも確認する必要があります。

Path.GetExtension() メソッドを使用してこれを行うことができます。

1
Gerald Versluis

上記のように、.xmlファイルとcsvファイルのみを表示する[ファイルを開く]ダイアログでフィルターを適用できます。 path.getextensionを使用 http://msdn.Microsoft.com/en-us/library/system.io.path.getextension.aspx ユーザーが実際に正しい拡張子のファイルを選択したかどうかを確認できます。間違った拡張子が選択された場合は、別のファイルを選択するように求めることができます。

アップロードする前にファイル拡張子を確認することを強くお勧めします。ユーザーがファイルを選択した後、拡張子を確認するだけです。間違ったファイルが選択された場合は、アップロード/処理を続行しないでください...

0
Hunterseaker