2011-12-06 15 views
2

VB.NETプログラムのWebBrowserに表示するローカルHTMLファイルを取得しようとしています。しかし私は動作するようには思えない、以下のコードを使用している、と私は理由を理解することはできません。ローカルHTMLファイル/コードをWebBrowserにインポートする

'first method 
    WebBrowser1.Navigate(@".\index.html"); 

    'second method 
    HTML = "normal" 
    WebBrowser1.Document.Body.InnerHtml = HTML 

私は実行するために行くときに第1の方法は、デバッグコンソールに「」エラーを生成しますそれ。 @を試してみると空白のページが表示されます。しかし、アドレスを変更すると、壊れたURLがわかるので、404メッセージが表示され、ファイルを見つけてもレンダリングしないように見えます。

2番目の方法はエラーが発生しないことを除いて最初の方法と同じですが、その方法はテキストの検索と同様ですが何もしません。両方の例で

私は、次のHTMLとプレーンテキストのバリエーションを試してみました:

<b>bold</b>normal 

normal 

は、なぜ、このシンプルなコードが動作しませんか?

答えて

5

@はC#用です。 VB.NETには文字列のエスケープシステムが異なる(read:better :-))ため、VB.NETには必要ありません。だから、文字列の前に@を削除し、また、;をCの#の後に取り除いてください。

問題は、WebBrowserを使用しているため、file:///のURLが必要です。例えば

WebBrowser1.Document.Write(IO.File.ReadAllText("index.html")) 

:そうのように、あなたのWebBrowserabout:blankにポイントし、直接にファイルを置くことはおそらく最も簡単なそのうちあなたがすることができるカップルの事があります。ファイルの絶対パスを取得して使用することもできます。

WebBrowser1.Navigate("file:///" & IO.Path.GetFullPath(".\index.html")) 
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 

このコードは私のプログラムで働いていたので、「@」と「;」を削除してください。

0

私が見つけた別のオプションは、ファイルを作成する必要はありません。

WebBrowser1.DocumentText = strHTML WebBrowser1.Update()

関連する問題