ファイルを選択することから始まる小さなユーティリティを書いています。そして、フォルダを選択する必要があります。デフォルトのフォルダを選択したファイルの場所にしたいと思います。
OpenFileDialog.FileName
はフルパスとファイル名を返します-私が欲しいのはパス部分(ファイル名を除く)です。これを初期値として使用できます- 選択したフォルダー。
private System.Windows.Forms.OpenFileDialog ofd;
private System.Windows.Forms.FolderBrowserDialog fbd;
...
if (ofd.ShowDialog() == DialogResult.OK)
{
string sourceFile = ofd.FileName;
string sourceFolder = ???;
}
...
fbd.SelectedPath = sourceFolder; // set initial fbd.ShowDialog() folder
if (fbd.ShowDialog() == DialogResult.OK)
{
...
}
これを行うための.NETメソッドはありますか、regex, split, trim,
などを使用する必要がありますか?
Path
クラスを System.IO
から使用します。 GetDirectoryName
を含むファイルパスを操作するための便利な呼び出しが含まれています。これは、ファイルパスのディレクトリ部分を返します。
使い方は簡単です。
string directoryPath = Path.GetDirectoryName(filePath);
これはどう:
string fullPath = ofd.FileName;
string fileName = ofd.SafeFileName;
string path = fullPath.Replace(fileName, "");
if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
{
strfilename = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
}
FileDialogの代わりにFolderBrowserDialogを使用して、OKの結果からパスを取得できます。
FolderBrowserDialog browser = new FolderBrowserDialog();
string tempPath ="";
if (browser.ShowDialog() == DialogResult.OK)
{
tempPath = browser.SelectedPath; // prints path
}
これを行う簡単な方法を次に示します。
string fullPath =openFileDialog1.FileName;
string directory;
directory = fullPath.Substring(0, fullPath.LastIndexOf('\\'));