Oppure

Loading
07/01/12 11:58
GN
Postato originariamente da bibimeravilla96:

Ho provato il codice ma non va bene mi da 2 errori i seguenti:


Credo che l'errore sia colpa del fatto che quando tenti di leggere l'HtmlDocument il webbrowser non ha ancora caricato la pagina (scrivendo di fretta non avevo tenuto conto di questo fatto); facendo come ti ha suggerito ampeg dovresti risolvere. Aggiungo che secondo me non c'è bisogno di importare mshtml (che occupa circa 9 MB) perchè basta leggere l'attributo href del tag <A> con il metodo GetAttribute (msdn.microsoft.com/it-it/library/…):
ListBox1.Items.Add(he.GetAttribute("href"))
Ultima modifica effettuata da GN 07/01/12 12:02
aaa
07/01/12 12:10
ampeg
perfetto, infatti non c'è bisogno di importare la COM


aggiungo anche altre informazioni utili che si possono ottenere


ListBox1.Items.Add(he.GetAttribute("href")) 'stringa del link

ListBox1.Items.Add(he.GetAttribute("innertext")) 'stringa del testo associato al link

ListBox1.Items.Add(he.GetAttribute("hostname")) 'stringa del solo host relativo al link



aaa
07/01/12 12:14
bibimeravilla96
Ok, ho provato il codice di ampeg ed è perfetto funziona :rofl: ma se voglio far si che mi cerchi solo determinati link???
aaa
07/01/12 12:36
ampeg
per ottenere solo determinati link devi filtrare il risultato che hai ottenuto attraverso il confronto tra stringhe e altre operazioni sulle stringhe


msdn.microsoft.com/it-it/library/…
Ultima modifica effettuata da ampeg 07/01/12 12:39
aaa
07/01/12 12:46
bibimeravilla96
In questo caso devo fare un confronto tra item....essendo una list box, o sbaglio??
Ultima modifica effettuata da bibimeravilla96 07/01/12 14:39
aaa
07/01/12 15:20
ampeg
devi fare un confronto testuale e lo puoi fare prima di aggiungere il testo alla listbox

esempio se voglio che siano inseriti nella listbox solo quei link che contengono il testo ".com" posso fare come segue

    For Each he As HtmlElement In CType(sender, WebBrowser).Document.Links

      'Assegno alla variabile sLink il testo del link anziché aggiungerlo direttamente alla ListBox
      Dim sLink As String = he.GetAttribute("href").ToString

      'Imposto il testo da filtrare
      Dim sFind As String = ".COM"

        'IndexOf restituisce la posizione del carattere all'interno della stringa qualora il testo in sFind sia incluso altrimenti restituisce -1

      If sLink.ToLower.IndexOf(sFind.ToLower) > -1 Then
        'il testo da cercare è incluso nel testo del link quindi lo aggiungo alla listbox
        ListBox1.Items.Add(sLink)

      End If


      'le funzioni ToLower applicate alle variabili stringa convertono il testo in minuscolo, in questo modo possiamo usare indipendentemente le lettere maiuscole / minuscole per cercare il testo

    Next




oppure puo anche usare direttamente la funzione IndexOf per ignorare il testo maiuscolo / minuscolo mettendo l'argomento "StringComparison.OrdinalIgnoreCase"

If sLink.IndexOf(sFind, 0, StringComparison.OrdinalIgnoreCase) > -1 Then
  ListBox1.Items.Add(sLink)
End If
Ultima modifica effettuata da ampeg 07/01/12 15:27
aaa
07/01/12 15:41
bibimeravilla96
Grazie mille perfetto....
Ultima cosa se voglio invece ripulire la list box da item uguali.....ovvero se si presentano nella list box 2 item uguali come faccio a far si che ne resti solo uno ad esempio: pippo voglio che diventi : pippo ???
topolino topolino
paperino paperino
pippo

io so come si rimuovono uno per uno gli item o rimuoverli tutti da una list box ma non credo servi....
Ultima modifica effettuata da bibimeravilla96 07/01/12 18:37
aaa
08/01/12 12:33
GN
Postato originariamente da bibimeravilla96:

Grazie mille perfetto....
Ultima cosa se voglio invece ripulire la list box da item uguali.....ovvero se si presentano nella list box 2 item uguali come faccio a far si che ne resti solo uno ad esempio: pippo voglio che diventi : pippo ???
topolino topolino
paperino paperino
pippo

io so come si rimuovono uno per uno gli item o rimuoverli tutti da una list box ma non credo servi....

E' più semplice evitare di inserire elementi già inseriti piuttosto che ripulire dopo; potresti quindi, prima di aggiungere un link, controllare se c'è già:
For Each he As HtmlElement In CType(sender, WebBrowser).Document.Links
 Dim s As String = he.GetAttribute("href") 'link
 If Not listbox1.Items.Contains(s) Then 'solo se il link non c'è già
  ListBox1.Items.Add(s) 'lo aggiungiamo.
 Enf If
Next
aaa