dev.net.ua

Українська Спільнота Розробникiв
 
Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

Нужно в С# создать некий элемент в который можно поместить ХТМЛ

Останнє повідомлення 11-05-2008, 8:15 від AlekseyS. 5 відповіді.
Сортувати: Попереднє Наступне
  •  10-05-2008, 14:01 6048

    Нужно в С# создать некий элемент в который можно поместить ХТМЛ

    Доброго дня!
    Возник вопрос. Нужно создать в вин приложении написаном на C# некий обьект (например как стандартный webbrowser) в который я бы мог добавлять хтмл код, и понятно отображать его. Конечно оптимальными было бы использование стандартного бразуера, но встает логичный вопрос о том, как вставить в него хтмл код. Если это возможно, то киньте минимальным примером в меня.
    Заранее извиняюсь если плохо описал проблему, но пишу в состоянии крайнего упадка умственных способностей :)

    Благодарю заранее каждого кто ответит в данной теме. Алексей.
  •  11-05-2008, 1:13 6051 у відповідь на 6048

    Re: Нужно в С# создать некий элемент в который можно поместить ХТМЛ

    Все это можно сделать используя стандартный webbrowser control.

    Делается это так:
    - подписываете ваш webbrowser control на событие DocumentComplete:
    this.webBrowser.DocumentComplete += new AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(this.webBrowser_DocumentComplete);
    - потом, когда надо отобразить что то в этом webbrowser вызываете:
    object flags = null;
    object targetFrame = null;
    object postData = null;
    object headers = null;

    webBrowser.Navigate("about:blank"), ref flags, ref targetFrame, ref postData, ref headers);

    - добавьте в проект reference на Microsoft.mshtml.dll (C:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll)
    - вот, что должно быть в обработчике DocumentComplete:


    private void webBrowser_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
    {   
     // get the main document from the browser
     mshtml.IHTMLDocument2 mainDoc = this.webBrowser.Document as mshtml.IHTMLDocument2;

     if (mainDoc != null && e.uRL != null && e.uRL.ToString() == "about:blank")
     {
      mainDoc.write("<insert your HTML here>");
     }
    }


    Thank you,
    Misha Zhutov
    http://submain.com - .NET Developer Tools
    Microsoft MVP
  •  11-05-2008, 3:54 6053 у відповідь на 6051

    Re: Нужно в С# создать некий элемент в который можно поместить ХТМЛ

    Михаил, благодарю вас за ответ.
    Тему можно закрывать.
  •  11-05-2008, 5:25 6054 у відповідь на 6053

    Re: Нужно в С# создать некий элемент в который можно поместить ХТМЛ

    Михаил, подскажите, а в чем разница вашего решение, и применения метода DocumentText ?
    То есть, я написал следующее
    this.webBrowser1.DocumentText = "<b>Some Text</b><br><br><br><h1>And heeeere's Header</h1>";

    И в браузере отобразилось то что я указал.
    Мне кажется что это несколько легче чем тот способ что указали вы :) Но возможно я не прав.
  •  11-05-2008, 5:49 6056 у відповідь на 6054

    Re: Нужно в С# создать некий элемент в который можно поместить ХТМЛ

    Разница в том, что мы говорим про совершенно разные webbrowser, вы же не уточняли, какой именно вы используете. Я имел ввиду Microsoft Internet Controls, которые использовались еще со времен .NET FW 1.1 и у меня этот код уже давно работет. У вас же используется System.Windows.Forms.WebBrowser class который появился в .NET FW 2.0, который является, на самом деле, оберткой над старым webbrowser c урезанной функциональностью.

    Если вы используете именно его, то, действительно, можно использовать свойство DocumentText.  


    Thank you,
    Misha Zhutov
    http://submain.com - .NET Developer Tools
    Microsoft MVP
  •  11-05-2008, 8:15 6059 у відповідь на 6056

    Re: Нужно в С# создать некий элемент в который можно поместить ХТМЛ

    Все, теперь окончательно разобрался. Еще раз спасибо :)
Переглядати як новосний Блог RSS в XML