2012-11-14 2 views
0

으로 메모장에서 텍스트 파일 열기 내 프로젝트에서 텍스트 파일을 열려고합니다. 그럼 아래의 코드는 작동하지만 사용자가 버튼을 여러 번 클릭하면 많은 파일이 열리고 있습니다. 나는 또한 텍스트 파일을 열 수 없습니다 또한 오류가 표시되지 않는 this, File.OpenFile.OpenText을 시도단일 인스턴스

System.Diagnostics.Process.Start(filePath); 

(내가 원하는 해달라고하는) 또한

File.Open(filePath); (or) 
File.OpenText(filePath); (or) 
FileStream fileStream = new FileStream(filePath, FileMode.Open); 
(시도의 catch 블록으로 시도) 노력이 : ( 오류 : 인스턴스 참조하여 액세스 할 수 없습니다 대신 타입 이름으로 자격)

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
proc.Start(filePath); /*red scribbles here*/ 
proc.WaitForExit(); 

텍스트 파일 (.txt)의 인스턴스를 하나만 표시하는 방법. 내 시도에서 뭔가 잘못하고 있니? 제발 제안 해주세요.

편집 : 내가 나중에 있지만 같은 또한 응용 프로그램이 텍스트 파일을 열 (또는 많은) 이후에 액세스 할 수 있어야합니다을 다른 텍스트 파일을 열려면

. 나에게는 단 하나의 형식 만있다.

+2

"열기"란 의미를 정의하십시오. 메모장에서 열시겠습니까? –

+0

예 .............. –

+0

다음 질문 : 1) 동시에 여러 텍스트 파일을 열어야합니까 (각 파일에 대해 하나의 창); 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; 
+0

예. 작동 중입니다. 하지만 내 양식에 어떤 배경 작업을 할 수 없어 ... –

+0

@avip - 어떻게 나빠요? –

+0

파일이 열려있는 동안 OP 명시된 사용자가 계속 작업을 수행 할 수 있어야하므로 좋지 않습니다. – avishayp

0

확인 파일이

example

을 열고 당신이 원하는대로 다음 작업을 할 경우.

관련 문제