2012-01-09 14 views
10

私はSaveFileDialogを使用して、ファイルを保存する場所を選択します。 InitialDirectoryをいくつかのフォルダに設定しましたが、保存場所をそのフォルダまたはそのフォルダのサブフォルダに制限したいとします。これは可能ですか?特定のフォルダ内のC#SaveFileDialog

SaveFileDialog dialog = new SaveFileDialog(); 
dialog.InitialDirectory = "SomePath"//this is the path that I want to be root folder 
+0

申し訳ありませんが、私は、これは有用である場合を考えることはできません。 ファイルを保存する場所またはファイルを保存する場所を制御できます。 あなたはなぜこれをやりたいのか説明してください。 – M0rgenstern

+1

バンドルからファイルを編集するためのエディタがあります(そのままデバイスにコピーされます)。私は、ユーザーが別のフォルダにファイルを保存できるようにしたくありません。最後にはコピーされず、奇妙なエラーが発生する可能性があります。 – Felics

答えて

9

いいえ、それはできません。

SaveFileDialogのプロパティとして直接設定することはできません。しかし、FileOkイベントを使用して、ファイルがそのディレクトリにあるかどうかを検証し、それ以外の場合はイベントをキャンセルすることで、この操作を試みることができます。

dialog.FileOk += 
    delegate (object sender, CancelEventArgs e) 
    { 
     if (dialog.FileName is in wrong directory) 
     { 
      e.Cancel = true; 
     } 
    }; 

前述のように、次の最適なオプションは、独自のダイアログを構築することです!

+0

ユーザーが他のフォルダからファイルを選択するとキャンセルしたくないので、他のフォルダを選択させたくありません。 – Felics

+1

選択をキャンセルするだけで、ダイアログはキャンセルされません。 – Kolky

+0

これは非常に有益な回答でした。ありがとうございます。 – MikeMalter

0

頭に浮かぶいくつかの解決策は以下のとおりです。

は、最初の場所でユーザーを防ぐほど良くないファイル選択後

をエラーを表示しますが、それは、コードの多くを取ることはありません。かなり簡単です。

ユーザーが慣れているもののように見えるようにすることが非常に痛い独自のファイル選択画面を構築します。多くのコードを取ります。

0

私が考えることは、プログラミングとはあまり関係がなく、難しいかもしれないので、話題にならないかもしれません。

アプリケーションがインストールされている間は、アプリケーションのためだけにWindows上に特定のユーザーを作成する必要があります。

あなたがアプリだから始めることができます。そのユーザーはAppを使用していますマニフェストファイル。

その後、特定のユーザー権限をルートフォルダにのみ書き込むことができます。これは、OSがその方法を制御する方法です。

PS:この解決方法ではそれを支払うとは思えませんが、動作する可能性があります。

サルーテ

関連する問題