お気に入り への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 るきお  (社会人)
投稿日時
2010/8/16 20:05:01
下の例のGetBookmarksメソッド内のFor Eachはもっと簡単に次のように書いてもOKでした。
For Each fileName As String In IO.Directory.GetFiles(path, "*.url", IO.SearchOption.AllDirectories)
Dim title As String = IO.Path.GetFileNameWithoutExtension(fileName)
Dim link As New WebSiteLink With {.Title = title, .URL = fileName}
results.Add(link)
Next
投稿者 るきお  (社会人)
投稿日時
2010/8/16 19:59:24
こんにちは。
やりたいことがちょっとわからないのですが、
①お気に入りに登録」というボタンがあって、それをクリックしたら、IEなどで使用するお気に入りの一覧をリストボックスに表示する。リストボックスに表示するのはサイトのタイトル。
②リストボックスで項目をクリックすると、その項目のサイトが表示される
ということでよいでしょうか?
お気に入りはフォルダーを作って管理できるので階層構造になっています。一方リストボックスは階層構造になっていないのでお気に入りをリストボックスで表現するのは無理があります。
仮にフラットに表示すればよいとすれば次のようにして表示できます。
この例ではサイトのタイトルだけでなく、URLも並べて表示しています。
タイトルだけを表示し、クリックするとそのサイトに飛べるようにするには次のようにします。
やりたいことがちょっとわからないのですが、
①お気に入りに登録」というボタンがあって、それをクリックしたら、IEなどで使用するお気に入りの一覧をリストボックスに表示する。リストボックスに表示するのはサイトのタイトル。
②リストボックスで項目をクリックすると、その項目のサイトが表示される
ということでよいでしょうか?
お気に入りはフォルダーを作って管理できるので階層構造になっています。一方リストボックスは階層構造になっていないのでお気に入りをリストボックスで表現するのは無理があります。
仮にフラットに表示すればよいとすれば次のようにして表示できます。
この例ではサイトのタイトルだけでなく、URLも並べて表示しています。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal 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 String, String)
'お気に入りの階層を無視してフラットにお気に入りを取得する例
Dim results As New Dictionary(Of String, String)
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.Object, ByVal 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.Object, ByVal 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.Object, ByVal 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
投稿者 トマト  (中学生)
投稿日時
2010/8/16 18:14:01
1.お気に入りの情報を入れる(URIと名前)クラスを作る
2.リストボックスのDisplayMemberを名前を表すプロパティの名前にする
3.登録ボタンが押されたらインスタンスを作成してリストボックスに追加するようにする
4.リストボックスがクリックされたらWebBrowser.Navigate(ListBox.SelectedItem.Title)みたいな感じで表示させる
こんな感じですか?
2.リストボックスのDisplayMemberを名前を表すプロパティの名前にする
3.登録ボタンが押されたらインスタンスを作成してリストボックスに追加するようにする
4.リストボックスがクリックされたらWebBrowser.Navigate(ListBox.SelectedItem.Title)みたいな感じで表示させる
こんな感じですか?
投稿者 ともや  (高校生)
投稿日時
2010/8/15 16:11:24
WebBrowserに表示されてあるサイトをリストボックスに登録したいのですがどのようにすればいいでしょうか?
お気に入りに登録ボタンを押したらリストボックスにサイトのタイトル名が入ってそれをクリックしたら
そのサイトにいけるようにしたいです。
お願いします
お気に入りに登録ボタンを押したらリストボックスにサイトのタイトル名が入ってそれをクリックしたら
そのサイトにいけるようにしたいです。
お願いします
さらに、Button2_Clickは不要です。上の投稿ではコピペしたときにテスト用につくったButton2_Clickがまざってしまいました。