我正在尝试将一个本地HTML文件显示在VB.NET程序的WebBrowser
中。我正在使用下面的代码,但它似乎不起作用,我无法弄清楚原因:
'first method
WebBrowser1.Navigate(@".\index.html");
'second method
HTML = "normal"
WebBrowser1.Document.Body.InnerHtml = HTML
当我去运行它时,第一个方法在Debug控制台中产生错误“”。如果我在@
之外尝试,我会得到一个空的白页。但是,如果我更改了地址,所以我知道它的网址已损坏,我收到一条404消息,这使得它看起来像是在查找文件而不是渲染它?
第二种方法与第一种方法相同,只是没有产生错误,就像它找到文本但什么都不做。
在这两个示例中,我尝试了以下HTML和纯文本变体:
<b>bold</b>normal
和
normal
为什么这个简单的代码不起作用?
答案 0 :(得分:5)
@
是针对C#的;你不需要它用于VB.NET,因为VB.NET有一个不同的(读取:更好:-)
)转义字符串系统。因此,删除字符串前的@
,并删除行后的;
,这也是C#。
问题在于,由于您使用的是WebBrowser
,因此您需要一个file:///
网址。您可以执行以下几项操作,其中最简单的可能是将WebBrowser
指向about:blank
并直接放入文件,如下所示:
WebBrowser1.Document.Write(IO.File.ReadAllText("index.html"))
例如。您还可以获取文件的绝对路径,并使用:
WebBrowser1.Navigate("file:///" & IO.Path.GetFullPath(".\index.html"))
答案 1 :(得分:2)
我完全赞同Minitech给出的答案。我正在制作一个HTML代码测试人员并编写了这段代码,但它确实有效。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim sb As New System.Text.StringBuilder
sb.AppendLine(RichTextBox1.Text)
IO.File.WriteAllText("htmltester.html", sb.ToString())
WebBrowser1.Navigate("file:///" & IO.Path.GetFullPath(".\htmltester.html"))
End Sub
End Class
此代码适用于我的程序,我想告诉您,请删除那些&#39; @&#39;和&#39 ;;&#39;。
答案 2 :(得分:0)
Another option I found that works, don't have to create a file.
WebBrowser1.DocumentText = strHTML
WebBrowser1.Update()
答案 3 :(得分:0)
进行打开文件对话框,并将文件名引用到将显示路径的文本框或变量中。
$this->app->bind('Illuminate\Support\Facades\Storage::class', function ($app) {
return new MyNamespace\Storage());
});
然后使用OpenFileDialog1.ShowDialog()
TextBox1.Text = OpenFileDialog1.FileName
WebBrowser1.Navigate(TextBox1.Text)
导航到变量或文本框路径..
答案 4 :(得分:0)
简单易用:
System.diagnostics.Process.start(Path)
,然后将路径替换为您的路径。