我正在尝试使用OpenFileDialog
打开文件。
if (openFileDialog1.FileName != "" && resultSaveDialog == System.Windows.Forms.DialogResult.OK)
{
openFileDialog1.OpenFile(); // Throw Exception Here
txtFileName.Text = openFileDialog1.SafeFileName;
}
但是如果文件已经在浏览过的窗口中打开了,它会抛出异常
该进程无法访问该文件 'D:\ Projects \ CDR_RAW_FILES \ GroupData \ 8859511378.xls'因为它是 被另一个进程使用。
即使文件已经在窗口资源管理器中打开,是否可以使用OpenFileDialog
打开文件。
答案 0 :(得分: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;
}
答案 1 :(得分:0)
是的,在某些情况下是可能的: 第一个可能性:另一个程序没有锁定文件(例如只允许自己修改文件),而不是你可以毫无问题地打开它。 第二种可能性:您的程序不需要写入文件但只需要读取它就可以以只读模式打开它。 我不熟悉Winforms,但是你的Openfiledialog.OPenfile方法似乎以“读写”模式打开文件 - 所以第二个可能性不在窗口。 但是,如果您愿意使用My.Computer下的Classes,您可以使用readalltext(取决于您的问题)等方法打开文件,该方法应该接受只读重载。
答案 2 :(得分:0)
只是要添加,您可以在使用OpenFile()方法打开文件之前获取文件名。使用属性SafeFileName或FileName来获取它。
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;
}
文件名包括文件路径和扩展名。如果未选择任何文件,则此方法返回空字符串(“”)。