Webbrowser.DocumentStream или Webbrowser.DocumentText не работает? - PullRequest
2 голосов
/ 29 ноября 2010

Я не могу понять, почему эти простые строки кода просто не работают:

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

6 голосов
/ 29 ноября 2010

Вы сохраняете в поток, оставляя «курсор» в конце, а затем передаете его браузеру, который, как я подозреваю, читает из текущего местоположения. Попробуйте добавить:

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;
    }
}
3 голосов
/ 18 октября 2013

Это старый, но .... сегодня я некоторое время боролся с этим, и он не работал, пока я не выделил эту строку кода, влияющую на управление веб-браузером, и закомментировал ее:

AllowNavigation = false;

... очевидно, это должно быть правдой. Вы можете сделать все остальное правильно, и это не даст ему работать.

...