Avatar billede Slettet bruger
27. januar 2009 - 07:29 Der er 2 kommentarer og
1 løsning

Webbrowser registrerer links i html for sent

Hej!

Jeg har følgende kode som kører når det valgte element i et treeView skifter:

webBrowser1.DocumentText = html; //html indeholder noget html med mindst 1 link, som rt forskellig afhængig af det valgte element
HtmlElementCollection col = webBrowser1.Document.Links;
  foreach(HtmlElement el in col)
      MessageBox.Show(el.Id);

Problemet er, at webbrowseren ikke "opdager" linkene før elementet i treeView'et skifter for anden gang.
Dvs., at når man skifter treeView-elementet vises en messageBox med det id, det tidligere link havde, selvom html'en opdateres inden.

Jeg håber, I kan hjælpe.

//kaloer
Avatar billede aaberg Nybegynder
27. januar 2009 - 08:58 #1
Du skal lytte på DocumentCompleted eventet. Følgende kode sætter DocumentText propertien når der trykkes på en knap, venter til dokumentet er færdigt med at loade, og skriver alle links ud i konsol vinduet. Koden forudsætter at du lytter på DocumentCompleted eventet.

private void button1_Click(object sender, EventArgs e)
{
    this.webBrowser1.DocumentText = "noget html";
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    foreach (HtmlElement elem in webBrowser1.Document.Links)
    {
        Console.WriteLine(elem.InnerText);
    }
}
Avatar billede Slettet bruger
27. januar 2009 - 14:05 #2
Perfekt - Mange tak. Læg et svar hvis du vil have point :)
Avatar billede aaberg Nybegynder
28. januar 2009 - 11:05 #3
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester