none
Помогите с HTML кодом из WebBrowser! RRS feed

  • Вопрос

  • У меня есть Form1 на которой такие элементы: webBrowser1, button1. При нажатии button1 открывается Form2 на которой есть элемент richTextBox1. Мне нужно что бы в richTextBox загружался html текст страницы которая открыта в webBrowser1. Я делал так на Form2:

    Encoding enc = Encoding.GetEncoding("windows-1251");
    string HTMLText;
    Stream stream = webBrowser1.DocumentStream;
    StreamReader sr = new StreamReader(stream, enc);
    HTMLText = sr.ReadToEnd();
    stream.Close();
    richTextBox1.Text = HTMLText;
    Но возникает проблема в строке там где:
    Stream stream = webBrowser1.DocumentStream;
    Помогите решить проблему, ато я не могу сослаться на webBrowser1.

    • Перемещено Tagore Bandlamudi 1 октября 2010 г. 22:53 MSDN Forums consolidation (От:Visual C#)
    2 февраля 2010 г. 3:03

Ответы

  • передайте в конструктор формы2 ссылку на webBrowser1 из формы1:

    //Form1.cs
    void button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2(webBrowser1);
        f2.Show(this);
    }
    
    //Form2.cs
    private WebBrowser webBrowser1;
    
    public Form2(WebBrowser myWebBrowser)
    {
        InitializeComponent();
        this.webBrowser1 = myWebBrowser;
    
        GetHtml();
    }
    
    private void GetHtml()
    {
        Encoding enc = Encoding.GetEncoding("windows-1251");
        string HTMLText;
        Stream stream = webBrowser1.DocumentStream;
        StreamReader sr = new StreamReader(stream, enc);
        HTMLText = sr.ReadToEnd();
        stream.Close();
        richTextBox1.Text = HTMLText;
    }
    

    +может быть использовать:

    string HTMLText = webBrowser1.DocumentText;

    • Предложено в качестве ответа I.Vorontsov 2 февраля 2010 г. 7:39
    • Помечено в качестве ответа I.Vorontsov 3 февраля 2010 г. 7:42
    2 февраля 2010 г. 6:23

Все ответы

  • передайте в конструктор формы2 ссылку на webBrowser1 из формы1:

    //Form1.cs
    void button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2(webBrowser1);
        f2.Show(this);
    }
    
    //Form2.cs
    private WebBrowser webBrowser1;
    
    public Form2(WebBrowser myWebBrowser)
    {
        InitializeComponent();
        this.webBrowser1 = myWebBrowser;
    
        GetHtml();
    }
    
    private void GetHtml()
    {
        Encoding enc = Encoding.GetEncoding("windows-1251");
        string HTMLText;
        Stream stream = webBrowser1.DocumentStream;
        StreamReader sr = new StreamReader(stream, enc);
        HTMLText = sr.ReadToEnd();
        stream.Close();
        richTextBox1.Text = HTMLText;
    }
    

    +может быть использовать:

    string HTMLText = webBrowser1.DocumentText;

    • Предложено в качестве ответа I.Vorontsov 2 февраля 2010 г. 7:39
    • Помечено в качестве ответа I.Vorontsov 3 февраля 2010 г. 7:42
    2 февраля 2010 г. 6:23
  • У меня ошибка тут:

    //Form1.cs
    void button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2(webBrowser1);
        f2.Show(this);
    }

    3 февраля 2010 г. 11:48
  • стоило привести саму ошибку(
    из возможного:
    1. webBrowser1 должен быть вашим браузером в форме1 (передавайте свой браузер в параметре)
    2. нет соответствующего конструктора в форме2 (public Form2(WebBrowser myWebBrowser))

    3 февраля 2010 г. 11:57
  • Всё получилось! Спс! Просто раньше я делал всё также, но выдавало ошибку! Спс!
    3 февраля 2010 г. 12:05