ListView に一覧を追加する。 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 XPMAX2010  (中学生) 投稿日時 2010/10/23 18:49:47
魔界の仮面弁士 さん、ありがとうございます。
追加も取得もできました。
System.Xml と System.Xml.Linq をインポートすれば使えました。 
投稿者 (削除されました)  () 投稿日時 2010/10/23 18:48:45
(削除されました)
投稿者 (削除されました)  () 投稿日時 2010/10/23 18:44:02
(削除されました)
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/10/21 21:52:07
であれば、たとえばこんな感じで。

 
Public Class Form1
    Private Sub Form1_Load() Handles MyBase.Load
        'サンプルデータ 
        ListView1.Items.Add("C:\01.WAV").SubItems.Add("お気に入りミュージック01")
        ListView1.Items.Add("C:\02.WAV").SubItems.Add("お気に入りミュージック02")
        ListView2.Items.Add("C:\01.MP3").SubItems.Add("お気に入りミュージック03")
        ListView2.Items.Add("C:\02.MP3").SubItems.Add("お気に入りミュージック04")
    End Sub

    Private Sub Button1_Click() Handles Button1.Click
        'ListView の内容を XML ファイルに保存 
        Dim data = <album>
                       <WAV>
                           <%= From x As ListViewItem In ListView1.Items _
                               Select <MUSIC file=<%= x.Text %> title=<%= x.SubItems(1).Text %>/> _
                           %>
                       </WAV>
                       <MP3>
                           <%= From x As ListViewItem In ListView2.Items _
                               Select <MUSIC file=<%= x.Text %> title=<%= x.SubItems(1).Text %>/> _
                           %>
                       </MP3>
                   </album>

        data.Save("C:\MUSIC.XML")
        MsgBox("保存しました", vbInformation)
    End Sub

    Private Sub Button2_Click() Handles Button2.Click
        ListView1.Items.Clear()
        ListView2.Items.Clear()

        'XML ファイルの内容を ListView に表示 
        Dim data = XDocument.Load("C:\MUSIC.XML")

        For Each music In data.Root.<WAV>.<MUSIC>
            ListView1.Items.Add(music.@file).SubItems.Add(music.@title)
        Next
        For Each music In data.Root.<MP3>.<MUSIC>
            ListView2.Items.Add(music.@file).SubItems.Add(music.@title)
        Next
        MsgBox("読み込みました。", vbInformation)
    End Sub
End Class
投稿者 XPMAX2010  (中学生) 投稿日時 2010/10/21 19:12:14
別に、ファイルなどは、XMLでもいいです。
今はとにかく、ListViewの項目の保存、取得がしたいです。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/10/20 09:34:17
> ファイルの中の内容をリストビューに追加したいのです。
やりたい事はわかりました。ところで、質問内容は何でしょうか?

ファイルの内容を読み取る方法が分からないのでしょうか。
あるいは、読み取った内容を構文解析するところでつまずいているのでしょうか。
それとも、データをリストビューに表示させる部分が分からないのでしょうか。
もしくは、それ以外の所で悩んでいるのでしょうか。


ファイルの読み取りなら、まずは System.IO.File.ReadAllText メソッドを試してみてください。

構文解析については、ファイルの書式次第では String.Replace メソッドや
System.Text.RegularExpressions.Regex クラスを使えるかも知れません。

リストビューへの表示については、検索すれば幾つかの具体例が見つかるかと思います。
http://www.atmarkit.co.jp/fdotnet/dotnettips/258listviewadd/listviewadd.html


> “MUSIC.TXT”
一瞬、XML ファイルかと思いましたが……独自フォーマットのテキストのようですね。
となると、そのファイルの内容を読み取るための構文解析処理が必要になりそうです。

XML であれば簡単に処理できるのですが、XPMAX2010さんの独自フォーマットとなると、
細かい表記ルールが分からないため、コード例を提示するのは控えておきますが、
開発前に、空白文字の扱い(スペース、改行、タブ等)がどうなっているのかとか、
<WAV>や<MP3>に曲数が無い場合はどのようなデータになるのかとか、
曲名に「"」を含む場合はどのように表記されるのか、文字コードは何を使うのかなど、
細かいルールを定めておきましょう。
投稿者 XPMAX2010  (中学生) 投稿日時 2010/10/19 20:32:08
VB.NETを使ってプログラムを作っています。
それで、Googleで、「VB.NET ListView 項目 追加」と検索して出てくるのですが、
今回その方法ではなく、ファイルの中の内容をリストビューに追加したいのです。

”MUSIC.TXT”
<WAV>
 <"C:\01.WAV", "お気に入りミュージック01">
 <"C:\02.WAV", "お気に入りミュージック02">
</WAV>
<MP3>
 <"D:\01.MP3", "お気に入りミュージック03">
 <"D:\02.MP3", "お気に入りミュージック04">
</MP3>
/”MUSIC.TXT”

ListView1,2には、Column1,2の二つが追加してあります。
Button1をクリックしたときに、
ListView1のColumn1に C:\01.WAV と C:\02.WAV
ListView1のColumn2に お気に入りミュージック01、お気に入りミュージック02
同じく、ListView2には、<MP3>が追加されます。

こういうことはできますか?