2013-05-13 283 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;     
    } 

文件名包括文件路径和扩展。如果未选择文件,则此方法返回空字符串(“”)。

相关问题