2017-03-09 6 views
2

내 응용 프로그램은 TreeView와 RichTextBox로 구성됩니다. TreeView는 내 시스템의 내용 (디렉토리, 폴더 및 파일)을 표시합니다. 버튼을 누르면 TreeView에서 선택한 파일을 가져 와서 RichTextBox에 표시합니다.richtextbox에서 treeview의 선택된 파일 열기

private void button_Click(object sender, EventArgs e) 
    { 
     string a = TreeView.SelectedNode.FullPath;   
     MessageBox.Show(a); //To check if it's taking the correct path 
     richTextBox1.LoadFile(a, RichTextBoxStreamType.PlainText); 
    } 

문자열 A의 값이 그 TreeView.SelectedNode.FullPath 내가 메시지 박스로 확인 올바른 경로를 반환, 올바른 : 다음 코드를 사용했다.

그러나 richTextBox1.LoadFile(a, RichTextBoxStreamType.PlainText) 행에는 런타임 예외가 있습니다. 예외를 발생시키는 실제 선택한 파일 경로 (shown in the image) 앞에 디버그 폴더의 경로를 추가합니다. 모든 파일은 로컬에 저장됩니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

파일은 어디에 저장되어 있습니까? 나는 당신의 스크린에 전화 번호부에서 아닙니다 짐작한다. –

+0

@MightyBadaboom treeView는 시스템에서 사용 가능한 모든 파일을 표시합니다.결과는 동일한 디렉토리의 파일 또는 다른 위치의 파일에 대해 동일합니다. 디버그 폴더 경로는 파일을 열어도 추가됩니다. 이미지 [링크] (http://i65.tinypic.com/plx5k.png) –

+0

@MightyBadaboom이 문제를 해결했습니다. –

답변

0

몇 가지 연구와 시련 끝에이 문제에 대한 해결책을 찾았습니다.

이 문제의 원인은 코드 TreeView.SelectedNode.FullPath이 구문이 잘못된 경로를 반환하기 때문입니다. C\Users\Admin\Desktop\test.txt 즉 문법적으로 잘못된이 코드의 다른 부분에 직접 사용할 수 없다 : 당신은 트 리뷰에서 선택한 파일을 가정 하는 경로를 반환합니다 경로 C:\Users\Admin\Desktop\test.txt

TreeView.SelectedNode.FullPath 있습니다.

I 따라서 구문이 정확하고, 임시 문자열로이 출력을 가하고, 그리고 2 위 (1 인덱스)에 :\\를 삽입한다 갔다 솔루션. (C : \\ 사용자 ...)

이 도움이

private void button_Click(object sender, EventArgs e) 
{ 
    string a = TreeView.SelectedNode.FullPath.ToString(); 
    string b = ":\\"; 
    string c = a.Insert(1, b); 
    richTextBox1.LoadFile(c, RichTextBoxStreamType.PlainText); 
} 

희망 :

난 그냥 참조를 위해 사용되는 코드를 퍼팅. 이 문제를 해결하는 동안받은 도움에 감사드립니다.

1

귀하의 트리 노드가 절대 대신 상대 경로 경로를 포함하고 있기 때문입니다.

어떻게 방지 할 수 있습니까? 처음에는 FullPath 속성에 전체 경로 (드라이브 이름 포함)를 저장해야합니다.

경로가 폴더 이름으로 시작하면 응용 프로그램은 현재 활성 폴더 (디버그)의 내부 폴더를 가져 오려고합니다. 경로가 \으로 시작하는 경우 - app는 현재 드라이브의 루트 폴더에있는 파일을 찾습니다. 경로가 드라이브 이름 D:\으로 시작하면 app이이 드라이브에서 파일을 찾습니다. 따라서, 절대 경로를 항상 전달하는 것이 좋을 것입니다. 파일을 검색하는 동안 모호성을 제거합니다. 파일이 집행 파일에 상대적으로 보관해야하는 경우

, 당신은 접두사로 일부 ..\을 추가해야합니다 - 그것은 당신이 윈도우 경로 스타일에 익숙해 얻을 수 this을 읽을 수

'을 위 한 단계 것'을 의미합니다.

+0

소프트웨어 배경이 약해서 죄송합니다. FullPath 속성에 전체 경로 (드라이브 이름 포함)를 저장하는 방법을 알려드립니다. –

+0

문제를 이해했지만 해결책을 찾지 못했습니다. 그래도 도움을 주셔서 감사합니다. –

+0

어떻게 현재 FullPath 속성을 설정하고 어떻게 TreeView를 초기화합니까? 소스 코드를 볼 수있게되면 더 쉽게 도움을받을 수 있습니다. –