Webbrowser.DocumentStream或Webbrowser.DocumentText无法正常工作?

时间:2010-11-29 16:56:26

标签: c# browser stream webbrowser-control linq-to-xml

我无法弄清楚为什么这些简单的代码行不起作用:

// 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;

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:3)

这已经过时了,但是....今天我正在与这一段时间进行斗争,直到我隔离了影响网页浏览器控件的这行代码并将其评论出来之后它才能正常工作:

AllowNavigation = false;

......显然这需要成真。你可以把所有其他事情都做对,这将阻止它发挥作用。