2010-11-29 3 views
2

このコードのシンプルなラインは、単に動作しない理由を私は理解することはできません。Webbrowser.DocumentStreamまたはWebbrowser.DocumentTextが機能していませんか?

// Bulding tree 
var declaration = new XDeclaration("1.0", "UTF-8", "yes"); 
var root = new XElement("root"); 

// Adding elements to document 
var doc = new XDocument(declaration, root); 

// Salve the stream 
var stream = new MemoryStream(); 
doc.Save(stream); 

// Update WebBrowser control 
webBrowser1.DocumentStream = stream; 

答えて

6

あなたは、ストリームに保存する端部に位置する「カーソル」を残して...そして与えていますそれは私が現在の場所から読んでいると思われるブラウザにそれを。以下を追加してください:

stream.Position = 0; 

最後の行の直前。

編集:さて、あなたはそれが動作していないと言う...ここで私のために動作する短いが完全なプログラムです。これを試してみて、それがあなたのために働くかどうかを確認 - そしてそれがない場合は、あなたのコードと、この違いをうまくできるかどうかは、以下を参照してください

using System; 
using System.Drawing; 
using System.IO; 
using System.Text; 
using System.Windows.Forms; 

class Test 
{ 
    [STAThread] 
    static void Main() 
    { 
     Form form = new Form(); 
     WebBrowser browser = new WebBrowser(); 
     browser.Dock = DockStyle.Fill; 
     form.Controls.Add(browser); 
     form.Load += delegate { SetDocumentStream(browser); }; 

     Application.Run(form); 
    } 

    static void SetDocumentStream(WebBrowser browser) 
    { 
     string text = "<html><head><title>Stuff</title></head>" + 
      "<body><h1>Hello</h1></body></html>"; 
     byte[] bytes = Encoding.UTF8.GetBytes(text); 
     MemoryStream ms = new MemoryStream(); 
     ms.Write(bytes, 0, bytes.Length); 
     ms.Position = 0; 
     browser.DocumentStream = ms; 
    } 
} 
+0

まだ動作していません! – gremo

+0

@Gremo:私の編集を参照してください。 –

+0

Ok!私が解決しなければならない唯一の問題は、データソースプロパティをXMLメモリストリームに設定するときに、Webbroserコントロールが空白になってしまうことです。ストリームには実際にデータが含まれています(xmlは右クリック→ウェブブラウザコントロールのソース表示)。たぶん私はタグを設定する必要がありますが、私はより良い解決策を探していた... – gremo

2

これは私がこれを戦った....古いですが、しばらく今日、私は、Webブラウザコントロールに影響を与えるのコード行を分離し、それをコメントアウトするまで、それは動作しませんでした:

AllowNavigation = false; 

を...ので、明らかにこれは本当である必要があります。あなたは他のものをすべて揃えることができます。これにより、それが動作しなくなります。

関連する問題