2010-07-16 25 views
2

我正在使用以下代碼來選擇要在Windows窗體項目中導入的文件。如何自動禁用OpenFileDialog打開文件?

OpenFileDialog fdlg = new OpenFileDialog(); 
fdlg.Title = "C# Corner Open File Dialog"; 
fdlg.InitialDirectory = @"c:\"; 
fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*"; 
fdlg.FilterIndex = 2; 
fdlg.RestoreDirectory = true; 
if (fdlg.ShowDialog() == DialogResult.OK) 
{ 
    txtpath.Text = fdlg.FileName; 
} 

問題是所選文件在我不想要的背景中打開。我能做些什麼來獲取選定文件的路徑而不打開它?

+3

該代碼不能在我的測試中打開該文件...你能展示一個簡短但完整的程序來演示這個問題嗎? – 2010-07-16 07:48:14

+0

你想打開哪些文件?它對系統文件夾有不同的表現。如果使用OpenFileDialog打開Windows/Fonts文件夾,它將在Fonts Viewer中打開文件,並且不選擇該文件... – NileshChauhan 2010-07-16 07:48:49

+0

我選擇.xls文件,然後使用oledb connectionstring導入表。 可以有任何問題嗎? – 2010-07-16 07:57:20

回答

9

顯示OpenFileDialog並且用戶選擇文件不會打開文件。該文件可通過致電OpenFile打開。在你發佈的代碼中沒有打開文件。該代碼似乎是從MSDN上的示例中複製的。從該示例中的代碼的其餘部分是在這裏:

if(openFileDialog1.ShowDialog() == DialogResult.OK) 
{ 
    try 
    { 
     if ((myStream = openFileDialog1.OpenFile()) != null) // File is opened here. 
     { 
      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); 
    } 
} 

如果文件被打開,當你不希望它打開,那麼問題一定是別人,而不是在某個地方,你發佈的代碼做。例如,上次完成使用後,您可能沒有關閉該文件(例如使用Dispose)。

+0

我在使用它後關閉了連接。 – 2010-07-16 08:42:45

+0

這段時間已經過去了,但爲了完整起見,FileOpenDialog會檢查文件的狀態,如果文件已被使用,_does_實際上會產生一個錯誤,即使它實際上並未打開該文件。請參閱https://stackoverflow.com/questions/22342651/how-to-select-the-file-which-is-already-opened-using-openfiledialog – 2017-09-18 05:38:59

相關問題