Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 打开已在窗口资源管理器中打开的文件_C#_Winforms_Openfiledialog - Fatal编程技术网

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()方法默认以只读模式打开。