C# 打开已在窗口资源管理器中打开的文件
我正在尝试使用C# 打开已在窗口资源管理器中打开的文件,c#,winforms,openfiledialog,C#,Winforms,Openfiledialog,我正在尝试使用OpenFileDialog打开文件 if (openFileDialog1.FileName != "" && resultSaveDialog == System.Windows.Forms.DialogResult.OK) { openFileDialog1.OpenFile(); // Throw Exception Here txtFileName.Text = openFileDialog1
OpenFileDialog
打开文件
if (openFileDialog1.FileName != "" && resultSaveDialog == System.Windows.Forms.DialogResult.OK)
{
openFileDialog1.OpenFile(); // Throw Exception Here
txtFileName.Text = openFileDialog1.SafeFileName;
}
但若文件已经在窗口中打开,它将抛出以下异常
进程无法访问该文件
“D:\Projects\CDR\u RAW\u FILES\GroupData\8859511378.xls”,因为它是
正在被另一个进程使用
即使文件已经在Windows资源管理器中打开,也可以使用
OpenFileDialog
打开文件。是的,在某些情况下可以:
第一种可能性:另一个程序不锁定文件(例如,只允许自己修改文件),因此您可以毫无问题地打开它。
第二种可能性:您的程序不需要写入文件,只需要读取它,您可以以只读模式打开它。
我对Winforms不太熟悉,但是您的Openfiledialog.OPenfile方法似乎是以“读写”模式打开文件的,所以第二种可能性是不存在的。
但是,如果您愿意使用My.Computer下的类,您只需使用readalltext(取决于您的问题)之类的方法打开该文件,该方法应接受只读重载。好的,如果您只需要选定的文件名及其路径,然后尝试下面的方法,它将帮助您
if (openFileDialog1.FileName != "" && resultSaveDialog == System.Windows.Forms.DialogResult.OK)
{
string path = Path.GetDirectoryName(openFileDialog1.FileName);
string filename = Path.GetFileName(openFileDialog1.FileName);
txtFileName.Text = filename;
}
只需添加,您可以在使用OpenFile()方法打开文件之前获取文件名。使用属性或获取它
if (openFileDialog1.FileName != "" &&
resultSaveDialog == System.Windows.Forms.DialogResult.OK)
{
txtFileName.Text = openFileDialog1.SafeFileName;
}
虽然我还没有测试过这个,但是如果您只需要文件名而没有路径,那么它应该可以满足您的需要
如果需要文件的完整路径,而不仅仅是文件名和扩展名,请使用以下属性:
if (openFileDialog1.FileName != "" &&
resultSaveDialog == System.Windows.Forms.DialogResult.OK)
{
txtFileName.Text = openFileDialog1.FileName;
}
文件名包括文件路径和扩展名。如果未选择任何文件,此方法将返回空字符串(“”)。(克隆/复制)&open为什么要打开文件。。。?要获取任何数据。。。?或者只是读取文件名…?@Pandian只是为了获取打开的文件名和path@RajeevKumar您只需要文件名及其路径,然后尝试我在他们的MSDN页面上添加的解决方案,OpenFile()方法默认以只读模式打开。