0

在我的项目中,我试图打开一个文本文件。下面的代码可以工作,但是当用户一次又一次地单击按钮时,许多文件都被打开了。(我不想要)

System.Diagnostics.Process.Start(filePath);

我也试过这个File.OpenFile.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) 的一个实例。我的尝试做错了吗?请建议。

编辑:

我想在之后打开其他文本文件但不一样,并且在打开文本文件(或许多)后应该可以访问应用程序。我只有一个表格。

4

2 回答 2

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;
于 2012-11-14T10:30:40.260 回答
0

检查文件是否打开

例子

然后做你想做的工作。

于 2012-11-14T10:29:58.190 回答