2017-03-09 9 views
2

私のアプリケーションは、TreeViewとRichTextBoxで構成されています。 ツリービューは、自分のシステムの内容(ディレクトリ、フォルダ、ファイル)を表示します。 ボタンを押すと、選択したファイルが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)の前にDebugフォルダのパスが追加され、例外が発生します。 すべてのファイルはローカルに保存されています。 この問題を解決するにはどうすればよいですか?

+0

ファイルはどこに保存されていますか?私はあなたの画面上のディレクトリにないと思います。 –

+0

@MightyBadaboomツリービューは、システム上で利用可能なすべてのファイルを表示します。結果は、同じディレクトリ内のファイルまたは他の場所にあるファイルでも同じです。デバッグフォルダのパスは、ファイルを開く場合でも追加されます。画像に表示[リンク](http://i65.tinypic.com/plx5k.png) –

+0

@MightyBadaboomが問題を解決しました。 –

答えて

0

いくつかの調査と試行の後、私はこの問題を解決しました。

この問題の背景にある理由は、コードTreeView.SelectedNode.FullPathが誤った構文のパスを返すためです。 は、ツリービューで選択したファイルがパスC:\Users\Admin\Desktop\test.txt

TreeView.SelectedNode.FullPathはパスを返します持っているとしますC\Users\Admin\Desktop\test.txtすなわち、それは、コードのいくつかの他の部分で直接使用することはできません構文的に間違っていました。

私は、このように構文が正しいなって、一時的な文字列の中に、この出力を入れ、そして2位(第一インデックス)で:\\を挿入し、あるために行ってきましたソリューションを提供します。(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プロパティに完全パス(ドライブ名を含む)を格納する必要があります。

パスがフォルダ名で始まる場合、アプリケーションは現在アクティブなフォルダ(Debug)の内部フォルダを取得しようとします。パスが\で始まっている場合、アプリケーションはパスがドライブ名D:\で始まる場合、現在のドライブのルートフォルダ内のファイルを検索します.appはこのドライブ上のファイルを検索します。したがって、あなたの場合、常に絶対パスを渡す方が良いでしょう。ファイルを検索している間はあいまいさを除外します。ファイルは実行ファイルに、比較的保存されなければならない場合

、あなたは接頭辞として、いくつかの..\を追加する必要があります - それは、Windowsのパス名のスタイルに慣れてもらうためにthisを読むことができる

「1段上を行く」の略です。

+0

ソフトウェアの背景が弱いのは残念ですが、FullPathプロパティに完全なパス(ドライブ名を含む)を保存する方法を教えてください。 –

+0

私は問題を理解しましたが、私はまだ解決策に到達できません。しかし、助けてくれてありがとう。 –

+0

現在、FullPathプロパティをどのように設定し、どのようにTreeViewを初期化しますか?あなたのソースコードを見ることができたら、あなたを助けてくれます。 –

関連する問題