none
Компонент WebBrowser RRS feed

  • Вопрос

  • Здравствуйте, необходимо поместить в этот компонент файл из ресурсов программы. Это можно сделать напрямую, или ссылку придется давать только через путь на диске? Если напрямую нельзя, то как скопировать файлы из ресурсов во время работы программы на диск? И как при добавлении содержания пролистывать страницу до конца вниз?
    4 апреля 2011 г. 11:42

Ответы

  • А к чему такое мудреное обращение к ресурсам? не проще обратится к My.Resources? И еще, как выяснилось, ресурсы в виде .htm файлов возвращаются в виде объекта String, поэтому должно сработать так:

    WebBrowser1.DocumentText = My.Resources.FS_HT_Empty

    Что касается дополнение, то если так как у вас не работает - просто создайте временную строковую переменную, скопируйте в нее DocumentTex, добавьте что нужно и верните обратно

    • Помечено в качестве ответа Abolmasov Dmitry 8 апреля 2011 г. 9:13
    5 апреля 2011 г. 9:18
    Отвечающий

Все ответы

  • Если речь о WebBrowser из пространства имен Windows.Forms, то у него есть свойство DocumentStream, а все ресурсы возвращаются в виде Stream, так что просто присвойте этому свойству значение ресурса.

    С WebBrowser'ом из 4-го Framework еще не работал, поэтому точно не скажу, но можно попробовать присвоить свойству Source ссылку на ресурс (в виде относительного URI)

    5 апреля 2011 г. 6:13
    Отвечающий
  • Dim Asm As Assembly = Assembly.GetExecutingAssembly()
      Dim thtml As Stream = Asm.GetManifestResourceStream("FS.HT_Empty.html")
      WebBrowser1.DocumentStream = thtml

     

    Не работает. Так и остается пустым. А дополнить текст нельзя?

    WebBrowser1.DocumentText &= "<span> 12345 </span> "

    Таким способом он не дополняет предыдущий, а ставит текущий "12345"...

    5 апреля 2011 г. 8:51
  • А к чему такое мудреное обращение к ресурсам? не проще обратится к My.Resources? И еще, как выяснилось, ресурсы в виде .htm файлов возвращаются в виде объекта String, поэтому должно сработать так:

    WebBrowser1.DocumentText = My.Resources.FS_HT_Empty

    Что касается дополнение, то если так как у вас не работает - просто создайте временную строковую переменную, скопируйте в нее DocumentTex, добавьте что нужно и верните обратно

    • Помечено в качестве ответа Abolmasov Dmitry 8 апреля 2011 г. 9:13
    5 апреля 2011 г. 9:18
    Отвечающий
  • Хех :) Да... хотя пробовал же перед этим, не получалось... А такой момент... Вот когда я загружаю в него страницу со стилями, строку:

    WebBrowser1.DocumentText = "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN""" _
    & """http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd""><html xmlns=""http://www.w3.org/1999/xhtml"">" & _
    "<head><meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1251"" /><style type=""text/css"">" & _
         ".region {font-size:10pt;color:#008B8B;}" & _
    "</style></head><body>" & _
      "<span class='region>Слово...</span>" & _
    "</body></html>"

    "Слово" отображает соответствующе стилю. Но если после этого добавить текст:

    WebBrowser1.DocumentText &= "<span class='region'>йцукен</span>"

    Он будет без нужного стиля. Почему?


    5 апреля 2011 г. 9:38
  • Когда вы добавляете текст, он добавляется уже не в разметку, т.е. он вне тегов <html></html> а идет за ними. Тем самым получается ерунда. Вам нужно добавлять ваш span в тело <body>, тогда все должно быть хорошо.


    Для связи [mail]
    5 апреля 2011 г. 11:50
  • Дминтрий, это понятно, можно пример строки добавления? Я пишу WB.Document.Body.InnerHTML или Text, но он пишет ошибку, не ссылается на объект
    5 апреля 2011 г. 15:06
  • Например так (код на C# но суть и функции одни и теже, думаю проблем возникнуть не должно):

        private void button1_Click(object sender, EventArgs e)
        {
          webBrowser1.DocumentText =
         "<html><body>Please enter your name:<br/>" +
         "<input type='text' name='userName'/><br/>" +
         "<a href='http://www.microsoft.com'>continue</a>" +
         "</body></html>";
        }
    
        private void button2_Click(object sender, EventArgs e)
        {
          HtmlElement el = webBrowser1.Document.CreateElement("p");
          el.InnerText = "Hello";
    
          webBrowser1.Document.GetElementsByTagName("a")[0].InsertAdjacentElement(
            HtmlElementInsertionOrientation.AfterEnd, el);
        }
    

     


    Для связи [mail]
    • Предложено в качестве ответа Abolmasov Dmitry 7 апреля 2011 г. 8:58
    6 апреля 2011 г. 6:47