5

ファイルダイアログは、シャットダウンする前に使用された最後のディレクトリの場所を開く必要がありますが、これを行う方法がわかりません。私の同僚は、単語の例だけを見せてくれました。「ファイル」をクリックすると、最後に使用したファイルが表示され、以前に使用したことのないレジスタまたは INI ファイルを使用するように言われました。

私が使用しているコードは次のとおりです。

string f_sOudeLocatie = @"D:\path\is\classified";

private void btBrowse_Click(object sender, EventArgs e)
{
    OpenFileDialog fdlg = new OpenFileDialog();
    fdlg.Title = "Zoek de CSV file";
    fdlg.InitialDirectory = f_sOudeLocatie;
    fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
    fdlg.FilterIndex = 1;
    fdlg.RestoreDirectory = true;
    if (fdlg.ShowDialog() == DialogResult.OK)
    {
        tbGekozenBestand.Text = fdlg.FileName;
        tbVeranderNaamIn.Text = Path.GetDirectoryName(fdlg.FileName);
        f_sOudeLocatie = Path.GetDirectoryName(fdlg.FileName);
        f_sSourceFileName = fdlg.FileName;
        f_sDestFileName = Path.GetFileName(Path.GetDirectoryName(fdlg.FileName)) + ".csv";
        btOpslaan.Enabled = true;
        tbVeranderNaamIn.ReadOnly = false;
    }
}
4

3 に答える 3

10

OpenFileDialogボタンクリックイベントの外側を作成する場合は、最後に行ったフォルダーを記憶する必要があります

string f_sOudeLocatie = @"D:\path\is\classified";
OpenFileDialog fdlg = new OpenFileDialog();

public Form1()
{
    InitializeComponent();
    fdlg.Title = "Zoek de CSV file";
    fdlg.InitialDirectory = f_sOudeLocatie;
    fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
    fdlg.FilterIndex = 1;
    fdlg.RestoreDirectory = true;
}
private void btBrowse_Click(object sender, EventArgs e)
{
    if (fdlg.ShowDialog() == DialogResult.OK)
    {
        fdlg.InitialDirectory = fdlg.FileName.Remove(fdlg.FileName.LastIndexOf("\\"));// THIS LINE IS IMPORTENT

        tbGekozenBestand.Text = fdlg.FileName;
        tbVeranderNaamIn.Text = Path.GetDirectoryName(fdlg.FileName);
        f_sOudeLocatie = Path.GetDirectoryName(fdlg.FileName);
        f_sSourceFileName = fdlg.FileName;
        f_sDestFileName = Path.GetFileName( Path.GetDirectoryName(fdlg.FileName) ) + ".csv";
        btOpslaan.Enabled = true;
        tbVeranderNaamIn.ReadOnly = false;
    }
}
于 2013-09-03T07:10:07.857 に答える
3

設定する必要があります

fdlg.RestoreDirectory = false;

理由:

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

于 2013-09-03T07:10:51.443 に答える
1

レジストリを使用して、最後のディレクトリの場所を保存できます。ファイルダイアログを開くたびに、レジストリから値を取得し、デフォルトの場所として設定します。閉じたら、場所をレジストリに戻します。

このコード プロジェクトの記事では、レジストリの読み取りと書き込みについて詳しく説明しています ReadWriteDeleteFromRegistry

INI ファイルを使用することを選択した場合、INI ファイルから読み書きする方法の例がいくつか検索されます。

于 2013-09-03T07:10:38.770 に答える