2015-02-13 3 views
1

Я пытаюсь использовать OpenFileDialog, чтобы пользователь мог выбрать локальный файл, который может взаимодействовать с моим приложением. Файл может использоваться, когда пользователь выбирает его, поскольку я действительно хочу только получить путь к файлу. Моя проблема в том, что если я попытаюсь сделать это с помощью OpenFileDialog, когда пользователь нажимает «открывать», он фактически пытается открыть файл, даже если я не звоню для открытия где-либо. Поскольку файл используется, он выдает ошибку.OpenFileDialog только выбрать путь к файлу

Есть ли какой-либо способ представить диалог для пользователя только выбрать файл ничего не делать?

Heres мой текущий код:

 DialogResult result = this.qbFilePicker.ShowDialog(); 
     if (result == DialogResult.OK) 
     { 
      string fileName = this.qbFilePicker.FileName; 
      Console.WriteLine(fileName); 
     } 
+2

'OpenFileDialog' не * открывает * файл, он просто позволяет * выбрать * файл для открытия. Вы не должны получать исключение с кодом, который у вас здесь. – Habib

+0

I _think_ ОП запрашивает диалоговое окно, в котором не отображается обычное контекстное меню проводника для файлов в каталоге, то есть нет параметров «Открыть», «Печать», «Удалить», «Переименовать», «Свойства» и т. Д., А также средства для выбора файла. – softwariness

+0

Если все, что вы хотите, это путь, попробуйте вместо этого использовать FolderBrowserDialog. – LarsTech

ответ

0

Убедитесь, что вы используете

using System.Windows.Forms; 

Затем следующий код из MSDN не будет открывать файл, если вы явно не раскомментировать бит, который открывает файл:)

(Выньте биты, которые не относятся к вам, такие как фильтр .txt и т. Д.)

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
     OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

     openFileDialog1.InitialDirectory = "c:\\"; 
     openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 
     openFileDialog1.FilterIndex = 2; 
     openFileDialog1.RestoreDirectory = true; 

     if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      string fileName = openFileDialog1.FileName; 
      Console.WriteLine(fileName); 

      //to open the file 
      /* 
      try 
      { 
       Stream myStream = null; 
       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); 
      } 
      * */ 
     } 
} 
Смежные вопросы