带有浏览器控件的c#文件路径不能作为字符串变量工作

本文关键字:不能 字符串 工作 变量 路径 文件 浏览器 控件 | 更新日期: 2023-09-27 18:06:41

我有一个web浏览器控件在我的win窗体,我想使用导航方法打开一个本地pdf文件。如果我将url字符串硬编码为字符串字面值并将其作为新Uri传递给导航,它就可以正常工作:

WebBrowser wb = new WebBrowser();
...
string url = @"file:///C:'folder'01 - folder'my pdf file.pdf"
wb.Navigate(new Uri(url));
wb.Show();

正如你所看到的,我的路径有空格,似乎当我试图加载相同的字符串作为一个变量,(所以不是字符串文字)web浏览器不知道该怎么做。我用不同的方法"塑造"了我的字符串,使它看起来与上面的相同,但因为我不能把它写成字符串字面值,所以它不起作用。我想另一个选择是逃避所有反斜杠,但我认为有一个问题与空格。谁能给一个具体的例子,如何使这个工作通过传递一个字符串变量。

带有浏览器控件的c#文件路径不能作为字符串变量工作

我实际上设法弄清楚了,但我不完全理解为什么它工作。我怀疑,通过使url中的第一个字符串成为字面量,它"强制"将整个字符串视为字面量(并且字面量在Uri方法中工作得很好)。无论如何,希望这能帮助到那些可能被同样的事情困住的人。

WebBrowser wb = new WebBrowser();
string path = yourPath; // I have something like "C:'Folder 1'Folder 2"
string fileName = yourFileName; // "something.pdf"
string url = @"file:///" + path + fileName;
wb.Navigate(new Uri(url));
wb.Show();

注意:我通过传递一个openFileDialog结果fileName到一个私有方法来获得路径,该方法解析出路径并为fileName做了相同的操作。