在富文本框中从树视图中打开选定的文件
Open selected file from treeview in a richtextbox
我的应用程序由一个 TreeView、一个 RichTextBox 和一个 Button 组成。
TreeView 显示我系统的内容(目录、文件夹和文件)。
按下按钮时应该从 TreeView 中获取选定的文件并将其显示在 RichTextBox 中。
我使用了以下代码:
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
returns正确的路径,我用消息框确认。
但是 richTextBox1.LoadFile(a, RichTextBoxStreamType.PlainText)
行中存在运行时异常。
它在实际选择的文件路径 (shown in the image) 之前附加 Debug 文件夹的路径,这会导致异常。
所有文件都存储在本地。
我该如何解决这个问题?
这是因为您的树节点包含项目的相对路径而不是绝对。
如何预防?首先,您应该将完整路径(包括驱动器名称)存储在 FullPath
属性.
中
如果路径以文件夹名称开头,应用程序会尝试获取当前活动文件夹的内部文件夹(调试)。如果路径以 \
开头 - 应用程序将在当前驱动器的根文件夹中查找文件,如果路径以驱动器名称 D:\
开头 - 应用程序将在该驱动器中查找文件。因此,在您的情况下,最好始终传递绝对路径,这样可以在搜索文件时排除歧义。
如果文件要相对于执行文件存储,你应该添加一些..\
作为前缀——它代表'going one level upper'
您可以阅读 this 以更加熟悉 windows 路径名样式。
经过一些研究和试验,我找到了解决这个问题的方法。
此问题背后的原因是代码 TreeView.SelectedNode.FullPath
return 的路径语法不正确。
假设您在 TreeView 中选择的文件的路径为 C:\Users\Admin\Desktop\test.txt
TreeView.SelectedNode.FullPath
将 return 路径:C\Users\Admin\Desktop\test.txt
这在语法上是不正确的,即它不能直接用于代码的其他部分。
我寻求的解决方案是,将此输出放入一个临时字符串,并在第二个位置(第一个索引)插入 :\
,从而使语法正确。(C:\\Users. ..)
贴出我使用的代码,仅供参考:
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);
}
希望这对您有所帮助。感谢您在解决此问题时提供的帮助。
我的应用程序由一个 TreeView、一个 RichTextBox 和一个 Button 组成。 TreeView 显示我系统的内容(目录、文件夹和文件)。 按下按钮时应该从 TreeView 中获取选定的文件并将其显示在 RichTextBox 中。 我使用了以下代码:
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
returns正确的路径,我用消息框确认。
但是 richTextBox1.LoadFile(a, RichTextBoxStreamType.PlainText)
行中存在运行时异常。
它在实际选择的文件路径 (shown in the image) 之前附加 Debug 文件夹的路径,这会导致异常。
所有文件都存储在本地。
我该如何解决这个问题?
这是因为您的树节点包含项目的相对路径而不是绝对。
如何预防?首先,您应该将完整路径(包括驱动器名称)存储在 FullPath
属性.
如果路径以文件夹名称开头,应用程序会尝试获取当前活动文件夹的内部文件夹(调试)。如果路径以 \
开头 - 应用程序将在当前驱动器的根文件夹中查找文件,如果路径以驱动器名称 D:\
开头 - 应用程序将在该驱动器中查找文件。因此,在您的情况下,最好始终传递绝对路径,这样可以在搜索文件时排除歧义。
如果文件要相对于执行文件存储,你应该添加一些..\
作为前缀——它代表'going one level upper'
您可以阅读 this 以更加熟悉 windows 路径名样式。
经过一些研究和试验,我找到了解决这个问题的方法。
此问题背后的原因是代码 TreeView.SelectedNode.FullPath
return 的路径语法不正确。
假设您在 TreeView 中选择的文件的路径为 C:\Users\Admin\Desktop\test.txt
TreeView.SelectedNode.FullPath
将 return 路径:C\Users\Admin\Desktop\test.txt
这在语法上是不正确的,即它不能直接用于代码的其他部分。
我寻求的解决方案是,将此输出放入一个临时字符串,并在第二个位置(第一个索引)插入 :\
,从而使语法正确。(C:\\Users. ..)
贴出我使用的代码,仅供参考:
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);
}
希望这对您有所帮助。感谢您在解决此问题时提供的帮助。