2013-05-13 290 views
0

我想用OpenFileDialog打開一個文件。打開的文件已經在窗口瀏覽器中打開

if (openFileDialog1.FileName != "" && resultSaveDialog == System.Windows.Forms.DialogResult.OK) 
     { 
      openFileDialog1.OpenFile(); // Throw Exception Here 
      txtFileName.Text = openFileDialog1.SafeFileName;     
     } 

但是,如果文件是在窗口已經打開探索它拋出我下面的異常

該進程無法訪問該文件 「d:\項目\ CDR_RAW_FILES \ GroupData \ 8859511378.xls」,因爲它其他進程正在使用 。

是否可以打開文件使用OpenFileDialog即使文件已在窗口資源管理器中打開。

+0

(克隆/複製)&打開 – Eugene 2013-05-13 07:03:36

+0

爲什麼要打開文件...?獲取任何數據......?或者只是讀取文件名...? – Pandian 2013-05-13 07:05:55

+0

@Pandian只是爲了獲得打開的文件名和路徑 – 2013-05-13 07:14:06

回答

2

好吧,如果你只需要選擇的文件名和路徑,然後再嘗試使用下面,它會幫助你...

if (openFileDialog1.FileName != "" && resultSaveDialog == System.Windows.Forms.DialogResult.OK) 
{ 
string path = Path.GetDirectoryName(openFileDialog1.FileName); 
string filename = Path.GetFileName(openFileDialog1.FileName); 
txtFileName.Text = filename; 
} 
0

是的,在某些情況下是可以的: 第一種可能性:其他程序不鎖定文件(例如,只允許自己修改文件),而不是打開它。 第二種可能性:您的程序不需要寫入文件,只需要讀取它就可以以只讀模式打開它。 我不是很熟悉Winforms,但是您的Openfiledialog.OPenfile方法似乎以「讀取和寫入」模式打開文件 - 因此第二種可能性不在窗口中。 但是,如果您願意使用My.Computer下的Classes,則只需使用readalltext(取決於您的問題)等方法打開該文件即可接受只讀重載。

+0

http://msdn.microsoft.com/en-us/library/system.windows .forms.openfiledialog.openfile(v = vs.110).aspx在其MSDN頁面上,OpenFile()方法默認以只讀模式打開。 – 2013-05-13 07:26:02

+0

謝謝你 - 自動翻譯德語誤導人們,再次... – 2013-05-13 07:41:47

0

只是用打開文件時,添加,你可以得到一個文件名OpenFile()方法。使用屬性SafeFileNameFileName來獲取它。

if (openFileDialog1.FileName != "" && 
    resultSaveDialog == System.Windows.Forms.DialogResult.OK) 
    { 
     txtFileName.Text = openFileDialog1.SafeFileName;     
    } 

雖然我沒有測試過這一點,SafeFileName應該爲你所需要的如果你需要的是文件名而沒有一條路 _工作。

如果您需要完整的路徑到您的文件,而不僅僅是文件名和擴展名,然後使用FileName屬性:

if (openFileDialog1.FileName != "" && 
    resultSaveDialog == System.Windows.Forms.DialogResult.OK) 
    { 
     txtFileName.Text = openFileDialog1.FileName;     
    } 

文件名包括文件路徑和擴展。如果未選擇文件,則此方法返回空字符串(「」)。

相關問題