对于下一个或 URL 图标加载的不同循环

For Next or a different loop for URL Icon Load

我有一个基本上是各种网页启动器的应用程序。我正在尝试,OnLoad,用每个 URL 的 FavICON 填充我表单中的所有图片框。确切地说是25。我应该使用 For 和 Next 还是其他某种循环方法?循环部分的新手,因此感谢所有帮助。

我只加载一个 PictureBox 的代码如下:

Private Sub MainFormWPL_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'Dim WebICON As New WebBrowser

    MainURLLoader.Navigate(Label1.Text)
    'URLText.Text = WebBrowser1.Url.ToString
    Try
        Dim url As Uri = New Uri(Label1.Text)
        If url.HostNameType = UriHostNameType.Dns Then
            Dim icon = "http://" & url.Host & "/favicon.ico"
            Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(icon)
            Dim response As System.Net.HttpWebResponse = request.GetResponse()
            Dim stream As System.IO.Stream = response.GetResponseStream
            Dim favicon = Image.FromStream(stream)
            PictureBox1.Image = favicon
        Else
        End If
    Catch ex As Exception

    End Try
End Sub

假设您有 Label1 --> PictureBox1,一直到 Label25 --> PictureBox25:

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim matches() As Control
        For i As Integer = 1 To 25
            matches = Me.Controls.Find("Label" & i, True)
            If matches.Length > 0 Then
                Dim website As String = matches(0).Text
                matches = Me.Controls.Find("PictureBox" & i, True)
                If matches.Length > 0 AndAlso TypeOf matches(0) Is PictureBox Then
                    Dim PB As PictureBox = DirectCast(matches(0), PictureBox)
                    Task.Run(New Action(Sub() GetFavIcon(website, PB)))
                End If
            End If
        Next
    End Sub

    Private Sub GetFavIcon(ByVal website As String, ByVal PB As PictureBox)
        Dim url As Uri = New Uri(website)
        If url.HostNameType = UriHostNameType.Dns Then
            Dim icon = "http://" & url.Host & "/favicon.ico"
            Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(icon)
            Dim response As System.Net.HttpWebResponse = request.GetResponse()
            Dim stream As System.IO.Stream = response.GetResponseStream
            Dim favicon = Image.FromStream(stream)
            PB.Invoke(New MethodInvoker(Sub() PB.Image = favicon))
            response.Close()
        End If
    End Sub

End Class