投稿者 るきお  (社会人) 投稿日時 2010/8/16 19:59:24
こんにちは。

やりたいことがちょっとわからないのですが、

①お気に入りに登録」というボタンがあって、それをクリックしたら、IEなどで使用するお気に入りの一覧をリストボックスに表示する。リストボックスに表示するのはサイトのタイトル。
②リストボックスで項目をクリックすると、その項目のサイトが表示される
ということでよいでしょうか?

お気に入りはフォルダーを作って管理できるので階層構造になっています。一方リストボックスは階層構造になっていないのでお気に入りをリストボックスで表現するのは無理があります。

仮にフラットに表示すればよいとすれば次のようにして表示できます。
この例ではサイトのタイトルだけでなく、URLも並べて表示しています。
 
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

        Dim bookmarks = GetBookmarks()

        ListBox1.Items.Clear()
        For Each title In bookmarks.Keys
            Dim url = bookmarks(title)
            ListBox1.Items.Add(title & " - " & url)
        Next

    End Sub

    Public Function GetBookmarks() As Dictionary(Of StringString)

        'お気に入りの階層を無視してフラットにお気に入りを取得する例 
        Dim results As New Dictionary(Of StringString)
        Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

        For Each fileName As String In IO.Directory.GetFiles(path, "*.url", IO.SearchOption.AllDirectories)
            Dim title As String = IO.Path.GetFileNameWithoutExtension(fileName)
            Dim lines As String() = IO.File.ReadAllLines(fileName)
            Dim url As String = lines.First(Function(line) line.StartsWith("URL="))

            results(title) = Replace(url, "URL=""")
        Next

        Return results

    End Function


タイトルだけを表示し、クリックするとそのサイトに飛べるようにするには次のようにします。
 
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

        ListBox1.Items.AddRange(GetBookmarks.ToArray)

    End Sub

    Public Function GetBookmarks() As List(Of WebSiteLink)

        'お気に入りの階層を無視してフラットにお気に入りを取得する例 
        Dim results As New List(Of WebSiteLink)
        Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

        For Each fileName As String In IO.Directory.GetFiles(path, "*.url", IO.SearchOption.AllDirectories)
            Dim title As String = IO.Path.GetFileNameWithoutExtension(fileName)
            Dim lines As String() = IO.File.ReadAllLines(fileName)
            Dim url As String = lines.First(Function(line) line.StartsWith("URL="))
            Dim link As New WebSiteLink With {.Title = title, .URL = Replace(url, "URL=""")}
            results.Add(link)
        Next

        Return results

    End Function

    Private Sub Button2_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button2.Click

        Dim bookmarks = GetBookmarks()

        ListBox1.Items.Clear()
        For Each bookmark In bookmarks

            ListBox1.Items.Add(bookmark)
        Next

    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        Dim link As WebSiteLink = ListBox1.SelectedItem
        Process.Start(link.URL.ToString)
    End Sub

    Public Class WebSiteLink
        Public Title As String
        Public URL As String

        Public Overrides Function ToString() As String
            Return Title
        End Function
    End Class