在我的项目中,我正在尝试打开一个文本文件。以下代码可以正常工作,但当用户反复点击该按钮时,正在打开许多文件。 (我不想要)
System.Diagnostics.Process.Start(filePath);
我还尝试了this,File.Open
和File.OpenText
,它们没有打开文本文件,也没有显示任何错误(尝试使用try catch块)
File.Open(filePath); (or)
File.OpenText(filePath); (or)
FileStream fileStream = new FileStream(filePath, FileMode.Open);
我也试过这个:(错误:无法使用实例引用访问限定类型名称)
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.Start(filePath); /*red scribbles here*/
proc.WaitForExit();
如何仅显示文本文件(.txt)的一个实例。我在尝试中做错了吗?请建议。
编辑:
我想在之后打开其他文本文件但不一样,并且在打开文本文件(或许多文件)后也应该可以访问该应用程序。我只有一个表格。
答案 0 :(得分:4)
在表单级别创建一个字典:
public Dictionary<string, Process> OpenedProcesses = new Dictionary<string, Process>(StringComparer.OrdinalIgnoreCase);
现在更改打开文件的方式(注意HasExited
检查 - 这是必需的,以便用户可以关闭记事本并重新打开它):
// make sure that path is always in form C:\Folder\file.txt - less chance of different
// paths pointing to the same file.
filePath = System.IO.Path.GetFullPath(filePath);
Process proc;
if (this.OpenedProcesses.TryGetValue(filePath, out proc) && !proc.HasExited)
{
MessageBox.Show("The file is already open!");
// it could be possible to activate the window of the open process but that is another question on its own.
return;
}
proc = System.Diagnostics.Process.Start(filePath);
this.OpenedProcesses[filePath] = proc;
答案 1 :(得分:0)