アプリケーションストアにopenFileDialog
で開かれた最後のパスを作成し、新しく開いた後にそれを復元するにはどうすればよいですか?
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
acc_path = openFileDialog1.FileName;
Settings.Default.acc_path = acc_path;
foreach (string s in File.ReadAllLines(openFileDialog1.FileName))
{
accs.Enqueue(s);
}
label2.Text = accs.Count.ToString();
}
これが最も簡単な方法です: FileDialog.RestoreDirectory 。
設定を変更した後、あなたは呼び出す必要があります
Settings.Default.Save();
設定したOpenFileDialogを開く前に
openFileDialog1.InitialDirectory = Settings.Default.acc_path;
SetCurrentDirectory を使用して、OSの現在のディレクトリを操作するだけで十分だと思います。したがって、次のダイアログを開くと、そのパスが選択されます。
または、単にパスをアプリケーションの変数に保存して使用します
FileDialog.InitialDirectory プロパティ。
以下は、アプリケーションの存続期間中に、ユーザーが最後に選択したディレクトリでOpenFileDialogが開くことを確認するために必要なすべてです。
OpenFileDialog OpenFile = new OpenFileDialog();
OpenFile.RestoreDirectory = false;
あなたがしなければならないのは最初のディレクトリを設定することだけではなく、ダイアログボックスはあなたの最後の保存/開いた場所を記憶していることがわかりました。これは、アプリケーションを閉じて再度開いた後でも記憶されます。最初のディレクトリをコメントアウトして、このコードを試してください。上記の提案の多くも機能しますが、追加の機能を探していない場合は、これで十分です。
private void button1_Click(object sender, EventArgs e)
{
Stream myStream = null;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
//openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 2;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
using (myStream)
{
// Insert code to read the stream here.
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
}
InitialDirectoryプロパティを使用できます: http://msdn.Microsoft.com/fr-fr/library/system.windows.forms.filedialog.initialdirectory.aspx
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1.InitialDirectory = previousPath;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
previousPath = Path.GetDirectoryName(openFileDialog1.FileName);
acc_path = openFileDialog1.FileName;
Settings.Default.acc_path = acc_path;
foreach (string s in File.ReadAllLines(openFileDialog1.FileName))
{
accs.Enqueue(s);
}
label2.Text = accs.Count.ToString();
}
これは少し古いスレッドであることは知っていますが、同じ質問に対して気に入った解決策を見つけることができなかったので、独自に開発しました。これはWPFで行いましたが、Winformsでもほぼ同じように機能するはずです。
基本的に、私はapp.config
ファイルを使用してプログラムの最後のパスを保存します。
プログラムが起動したら、構成ファイルを読み取り、グローバル変数に保存します。以下は、プログラムの起動時に呼び出すクラスと関数です。
public static class Statics
{
public static string CurrentBrowsePath { get; set; }
public static void initialization()
{
ConfigurationManager.RefreshSection("appSettings");
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
CurrentBrowsePath = ConfigurationManager.AppSettings["lastfolder"];
}
}
次に、ファイル参照ダイアログを開き、InitialDirectory
プロパティを構成ファイルに保存されているものに設定するボタンがあります。これがグーグルに役立つことを願っています。
private void browse_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog open_files_dialog = new OpenFileDialog();
open_files_dialog.Multiselect = true;
open_files_dialog.Filter = "Image files|*.jpg;*.jpeg;*.png";
open_files_dialog.InitialDirectory = Statics.CurrentBrowsePath;
try
{
bool? dialog_result = open_files_dialog.ShowDialog();
if (dialog_result.HasValue && dialog_result.Value)
{
string[] Selected_Files = open_files_dialog.FileNames;
if (Selected_Files.Length > 0)
{
ConfigWriter.Update("lastfolder", System.IO.Path.GetDirectoryName(Selected_Files[0]));
}
// Place code here to do what you want to do with the selected files.
}
}
catch (Exception Ex)
{
MessageBox.Show("File Browse Error: " + Environment.NewLine + Convert.ToString(Ex));
}
}
使用している場合
Dim myFileDlog As New OpenFileDialog()
次に、これを使用して最後のディレクトリを復元できます
myFileDlog.RestoreDirectory = True
そしてこれはしない
myFileDlog.RestoreDirectory = False
(VB.NETの場合)