tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルVB2005 リスとボックスの保存
記事No9848
投稿日: 2010/02/05(Fri) 20:58
投稿者sb
こんばんわ
vbは授業で得た知識程度しかないのですが詰まっているので質問です
現在詰まっているのですが、リストボックスの項目をテキストファイルに保存しようと思っているのですがうまくいきません。
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        With SaveFileDialog1
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim txt_date As New System.IO.StreamWriter(.FileName, False, System.Text.Encoding.Default)
                txt_date.Write(ListBox1.Items)
                txt_date.Close()
            End If

        End With

    End Sub

これで保存すると
System.Windows.Forms.ListBox+ObjectCollection
と出て中身が保存できていません
一応中身は
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim kari As String

        If ComboBox1.Text = Nothing Then
            MsgBox("キャラクターを選択してください")
            Return
        End If

        If ListBox2.SelectedItem = Nothing Then
            MsgBox("カードを選択してください")
            Return
        End If

        goukei = NumericUpDown1.Value

        henkan = NumericUpDown1.Value * 1

        kari = ListBox2.SelectedItem & "×" & henkan


        If Label1.Text = Nothing Then

            Label1.Text = henkan
            ListBox1.Items.Add(kari)

        Else
            If Label1.Text >= 20 Then
                MsgBox("多すぎます")
                Return
            End If
            Label1.Text = keisan()


            ListBox1.Items.Add(kari)

        End If



    End Sub

    Private Function keisan() As Double
        keisan = CInt(Label1.Text) + goukei

    End Function

こうなってます

原因がわかる方 ご教授ください。

[ツリー表示へ]
タイトルRe: VB2005 リストボックスの保存
記事No9849
投稿日: 2010/02/05(Fri) 21:21
投稿者魔界の仮面弁士
> txt_date.Write(ListBox1.Items)

Items 全体を一度に保存しようとするのではなく、

  For Each item As Object In ListBox1.Items
     txt_date.WriteLine(item)
  Next

のようにして、個々の要素をひとつずつ書きだしてみてください。

[ツリー表示へ]
タイトルRe^2: VB2005 リストボックスの保存
記事No9850
投稿日: 2010/02/05(Fri) 22:07
投稿者sb
魔界の仮面弁士さん
ありがとうございます!
しかし抗議のみで勉強した知識なのでforやnextは使ったことがないので指定するほうがわかりませんでした。
もしよければ間接的にでも方法を教えてもらえませんか?

[ツリー表示へ]
タイトルRe^3: VB2005 リストボックスの保存
記事No9851
投稿日: 2010/02/05(Fri) 22:38
投稿者花ちゃん
> もしよければ間接的にでも方法を教えてもらえませんか?

ここのTips集にサンプルがありますよ。

[ツリー表示へ]
タイトルRe^4: VB2005 リストボックスの保存
記事No9852
投稿日: 2010/02/05(Fri) 22:51
投稿者sb
> ここのTips集にサンプルがありますよ。
2.ListBoxの項目をファイルへの保存
というやつでしょうかね
先ほど仮面弁士さんが教えてくださってものも同じでしたが、保存されたテキストを開いて見たのですが、空白でした。
試しにlabel1.textの内容を保存してみた時は普通に表示できたのですが、やはりどこか間違っているのでしょうか?

[ツリー表示へ]
タイトルRe^5: VB2005 リストボックスの保存
記事No9853
投稿日: 2010/02/05(Fri) 23:39
投稿者花ちゃん
> 2.ListBoxの項目をファイルへの保存
> というやつでしょうかね
> 先ほど仮面弁士さんが教えてくださってものも同じでしたが、保存されたテキストを開いて見たのですが、空白でした。

Button3_Click イベント内にどのように書いたのか、Button3_Click 内の内容を全て
投稿して見て下さい。

[ツリー表示へ]
タイトルRe^6: VB2005 リストボックスの保存
記事No9854
投稿日: 2010/02/06(Sat) 00:08
投稿者sb
現在はこうなってます
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click


        With SaveFileDialog1
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim txt_date As New System.IO.StreamWriter(.FileName, False, System.Text.Encoding.Default)
                For Each item As Object In ListBox1.Items
                    txt_date.WriteLine(item)
                Next


            End If

        End With



    End Sub

もしかしたらリストボックス2から1に内容を送る時にミスでもしているのですかね。

[ツリー表示へ]
タイトルRe^7: VB2005 リストボックスの保存
記事No9855
投稿日: 2010/02/06(Sat) 01:47
投稿者花ちゃん
> 現在はこうなってます
何か忘れていませんか?

> もしかしたらリストボックス2から1に内容を送る時にミスでもしているのですかね。

件数を調べてみたら。

取りあえず下記をペーストして確認して見て下さい。
(下記で問題なく保存出来ている事を確認しておりますので)

Private Sub Button3_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button3.Click
    MessageBox.Show("ListBox1 に登録されているデーター件数は、" & _
                                ListBox1.Items.Count.ToString() & " です。")
    With SaveFileDialog1
        If .ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim txt_date As New System.IO.StreamWriter(.FileName, _
                                         False, System.Text.Encoding.Default)
            For Each item As Object In ListBox1.Items
                txt_date.WriteLine(item)
            Next
            txt_date.Close()
        End If
    End With
End Sub

[ツリー表示へ]