3

ユーザーがアプリケーションを初めて使用するときに「参照」をクリックしたときに、%ProgramData% などの特定のパスを開く OpenFileDialog があります。そして、連続するすべての用語について、最後に使用したフォルダーを開く必要があります。

私は試した:

        OpenFileDialog ofd = new OpenFileDialog();
        ofd.InitialDirectory = "C:\ProgramData";
        ofd.RestoreDirectory = true;
        ofd.FileName = "";
        DialogResult dr = ofd.ShowDialog();

ここでの問題は、必要なファイルを探しているときにパスを変更しても、毎回「C:\ProgramData」を開くことです。設定する必要がある特定のプロパティはありますか、またはプログラムで OpenFileDialog の使用状況を追跡し、それに応じてパスを設定する必要がありますか?

4

4 に答える 4

2

次のようにします。

// save your current directory  
string currentDirectory = Environment.CurrentDirectory;  

// create an OpenFileDialog and set RestoreCurrentDirectory to false.   
OpenFileDialog ofd = new OpenFileDialog();  
ofd.RestoreCurrentDirectory = false;  
ofd.ShowDialog();  

// save the selected directory locally.   
string selectedDirectory = Environment.CurrentDirectory;  // OpenFileDialog changed this value.   
Environment.CurrentDirectory = currentDirectory; // reset the property with the first value.   

// next time you open an OpenFileDialog, set the InitialDirectory property  
OpenFileDialog ofd2 = new OpenFileDialog();  
ofd.InitialDirectory = selectedDirectory; // set the InitialDirectory to what it was last time an OpenFileDialog was opened.   
ofd.ShowDialog(); 

RestoreDirectory プロパティにより、OpenFileDialog が閉じる前に Environment.CurrentDirectory の値が確実にリセットされます。RestoreDirectory が false に設定されている場合、Environment.CurrentDirectory は OpenFileDialog が最後に開かれたディレクトリに設定されます。

于 2012-07-16T11:57:16.900 に答える
2

これを試して:

ボタンのクリックで intialdirectory を C:\ProgramData にリセットしています

public partial class Form1 : Form
    {
           OpenFileDialog ofd = new OpenFileDialog();

        public Form1()
        {
            InitializeComponent();
            ofd.InitialDirectory = "C:\\ProgramData";
        }    
        private void button1_Click(object sender, EventArgs e)
        {                     
          DialogResult dr = ofd.ShowDialog();
          ofd.InitialDirectory = null;   
        }    
    }
于 2012-07-16T12:01:53.297 に答える
1

RestoreDirectoryプロパティを間違って読んでいると思います。実際、ダイアログを閉じた後、ディレクトリをデフォルトに復元します。やりたいこととは真逆。

また、確認してください:Multiselectがtrueに設定されている場合、OpenFileDialog RestoreDirectoryは効果がありません

于 2012-07-16T11:55:43.820 に答える
-1

単に、

FileDialog.RestoreDirectoryプロパティを設定しtrueます。ファイル ダイアログ ボックスを再度開くと、最後のディレクトリが検索されます。

例 :

ofd . RestoreDirectory = true;
于 2012-07-16T11:51:04.863 に答える