ListViewの内容をコレクション等へ出力して取り出したい。 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 YuO  (社会人)
投稿日時
2011/2/20 01:41:16
ListView.Itemsなら全ての要素が,SelectedItemsなら選択された要素が得られます。
MSDN: ListView.Items プロパティ (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listview.items.aspx
MSDN: ListView.SelectedItems プロパティ (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listview.selecteditems.aspx
で,これらをFor EachでまわせばListViewItemが列挙されます。
というか,パールマンさんのコードをブレークポイントを置いてデバッグ実行してウォッチすれば確認できると思いますが……。
他の方法としては,LINQ + String.Joinでしょうか。
とか。ではString.JoinにIEnumerable(Of String)を受け付けるものがないので,
と,ToArrayをかます必要がありますが……。
MSDN: ListView.Items プロパティ (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listview.items.aspx
MSDN: ListView.SelectedItems プロパティ (System.Windows.Forms)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listview.selecteditems.aspx
で,これらをFor EachでまわせばListViewItemが列挙されます。
というか,パールマンさんのコードをブレークポイントを置いてデバッグ実行してウォッチすれば確認できると思いますが……。
他の方法としては,LINQ + String.Joinでしょうか。
TextBox1.Text = String.Join(vbNewLine,
ListView1.Items.Cast(Of ListViewItem)().Select(Function(item) String.Format("<a href = ""{1}"">{0}</a>", item.SubItems(0).Text, item.SubItems(1).Text)))
とか。ではString.JoinにIEnumerable(Of String)を受け付けるものがないので,
TextBox1.Text = String.Join(vbNewLine, _
ListView1.Items.Cast(Of ListViewItem)().Select(Function(item) String.Format("<a href = ""{1}"">{0}</a>", item.SubItems(0).Text, item.SubItems(1).Text)).ToArray())
と,ToArrayをかます必要がありますが……。
投稿者 ビーグル犬  (社会人)
投稿日時
2011/2/19 21:44:57
すみません。
全てを取得したいのです。
選択したものだけでなく。
全てを取得したいのです。
選択したものだけでなく。
投稿者 ビーグル犬  (社会人)
投稿日時
2011/2/19 21:42:59
パールマンさんありがとうございます。
ただパールマンさんの変数宣言だとスコープがFor Each~Nextのみになってしまうので上位宣言しました
ただパールマンさんの変数宣言だとスコープがFor Each~Nextのみになってしまうので上位宣言しました
投稿者 パールマン  (社会人)
投稿日時
2011/2/19 00:59:28
ListViewにて選択されたItemが、と或るボタンをクリックすることにより複数行記述できるテキストボックスに、aタグ付きで出力される。
という動作でよいでしょうか。
ご質問の本文では、選択されたItemなのか全てのItemなのかが読み取れなかったのですが、‘選択されたItem’という仕様であれば間違いなかろうと解釈します。
取り出すだけでありましたら、
取り出された、SubItem0,SubItem1にタグ文字列を追加してMultiLineプロパティをTrueにしたテキストボックスに入れればよいかと考えます。
最後以外は改行コード(VbCrLf)を付けると・・・・
いかがでしょう
という動作でよいでしょうか。
ご質問の本文では、選択されたItemなのか全てのItemなのかが読み取れなかったのですが、‘選択されたItem’という仕様であれば間違いなかろうと解釈します。
取り出すだけでありましたら、
For Each k As ListViewItem In ListView1.Items
Dim SubItem0 As String = k.SubItems(0).Text ' タイトル
Dim SubItem1 As String = k.SubItems(1).Text ' URL
Next
取り出された、SubItem0,SubItem1にタグ文字列を追加してMultiLineプロパティをTrueにしたテキストボックスに入れればよいかと考えます。
最後以外は改行コード(VbCrLf)を付けると・・・・
いかがでしょう
投稿者 ビーグル犬  (社会人)
投稿日時
2011/2/18 23:27:11
ListViewに
タイトル | URL
Google | http://google.com/
Yahoo | http://yahoo.co.jp/
のようになっているとします。
ボタンを押したときにテキストボックスに
<a href = "http://google.com/">Google</a>
<a href = "http://yahoo.com.jp">Yahoo</a>
のように出力するようにしたいです。
コレクションに入れてFor Eachして取り出してどうたらこうたらすればできそうですがわかりません。
ご教授お願いします
タイトル | URL
Google | http://google.com/
Yahoo | http://yahoo.co.jp/
のようになっているとします。
ボタンを押したときにテキストボックスに
<a href = "http://google.com/">Google</a>
<a href = "http://yahoo.com.jp">Yahoo</a>
のように出力するようにしたいです。
コレクションに入れてFor Eachして取り出してどうたらこうたらすればできそうですがわかりません。
ご教授お願いします
> <a href = "http://yahoo.com.jp">Yahoo</a>
ひとつ質問。
データ中に「"」や「&」や「<」などが現れた場合、それらはどう表記したいですか?
出力結果を HTML や XML の形式で表記したいのであれば、たとえば
もしもそうしたエスケープが必要な場合、XElement 等を使う事ができます。
ただしこの手法では、