2011-02-09 2 views
1

Я использую OpenFileDialog для поиска определенного файла. Когда пользователь выбирает файл, я хочу сохранить этот путь в переменной. Однако, это не похоже на выбор в OpenFileDialog?C# FilePath Help

Кто-нибудь знает, как это сделать?

Спасибо.

Редактировать: Это Winforms, и я не хочу сохранять путь, включая имя файла, только место, где находится файл.

+2

Это SL? WPF? WinForms? –

ответ

1

Это восстановит свой путь на основе FileName собственностью OpenFileDialog.

String path = System.IO.Path.GetDirectoryName(OpenFileDialog.FileName); 
0

После закрытия диалога в объекте OpenFileDialog должно быть свойство пути к файлу (или что-то подобное), оно будет хранить любой путь к файлу, введенный пользователем.

5

Если вы используете WinForms, используйте свойство FileName вашего экземпляра OpenFileDialog.

+0

Это свойство не существует в SL так же, как FYI; не уверен, что использует OP ... –

+0

и, наконец, String path = System.IO.Path.GetDirectoryName (FileName); – rsapru

4

На WinForms:

String fileName; 
OpenFileDialog ofd = new OpenFileDialog(); 
DialogResult dr = ofd.ShowDialog(); 
if (dr == DialogResult.Ok) { 
    fileName = ofd.FileName; 
} 

//getting only the path: 
String path = fileName.Substring(0, fileName.LastIndexOf('\\')); 

//or easier (thanks to Aaron) 
String path = System.IO.Path.GetDirectoryName(fileName); 
+0

Это имя файла, которое я не хочу. Просто путь, в котором находится файл. Я должен был быть немного понятнее. –

+0

@ Darren Young: Отредактировано – oopbase

+1

Не нужно подстроки; String path = System.IO.Path.GetDirectoryName (имя_файла); –

0

Try FileName. Или FileNames, если вы разрешаете выбирать несколько файлов (Multiselect = true)

1

Вместо копирования вставки ответов от MSDN я просто свяжусь с ними.

Документация MSDN по адресу Forms OpenFileDialog.

MSDN documentaiton на WPF OpenFileDialog.

Пожалуйста, попробуйте найти ответ, прежде чем отправлять вопросы.

1

Вы храните путь ... где-то еще!

Что я обычно делаю, это создать переменную конфигурации пользовательского диапазона.

enter image description here

Вот пример его использования:

var filename = Properties.Settings.Default.LastDocument; 
var sfd = new Microsoft.Win32.SaveFileDialog(); 
sfd.FileName = filename; 
/* configure SFD */ 
var result = sfd.ShowDialog() ?? false; 
if (!result) 
    return; 
/* save stuff here */ 
Properties.Settings.Default.LastDocument = filename; 
Properties.Settings.Default.Save(); 

Чтобы сохранить только каталог, используйте System.IO.Path.GetDirectoryName()

+0

Спасибо, ваше последнее предложение указало мне в правильном направлении. Я использовал System.IO.Directory.GetParent (openFileDialog1.FileName) .ToString(); И это прекрасно работает. Благодарю. –