0

これまでのコードは次のとおりです。テキスト ファイルから読み取った名前を表示するリスト ボックスがあります。次に、txtName と txtPhone の 2 つのテキスト ボックスがあります。名前がリスト ボックスで強調表示されると、名前が txtName に表示され、電話番号が txtPhone に表示されるはずですが、正常に機能していません。どんな助けでも大歓迎です。

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim memberphones() As String = IO.File.ReadAllLines("memberphones.csv")
        Dim query = From line In memberphones
                    Let data = line.Split(","c)
                    Let name = data(0)
                    Let phone = data(1)
                    Select name
        lstOutput.DataSource = query.ToList
        txtName.Text = Name
        txtPhone.Text = phone
    End Sub

End Class

テキスト ファイルの内容は次のとおりです。 Carol Preiss,587-2333 Alice Rees,860-9744 Carlos Sanchez,209-4587 John Smith,576-2988

4

2 に答える 2

1

値を保持するクラスを作成し、クエリでそのクラスのインスタンスを作成します。

Public Class Form1

    Public Class Record
        Public Name As String
        Public Phone As String

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

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim query = From line In IO.File.ReadAllLines("memberphones.csv")
                    Let data = line.Split(","c)
                    Select New Record() With {.Name = data(0), .Phone = data(1)}
        lstOutput.DataSource = query.ToList
    End Sub

    Private Sub lstOutput_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles lstOutput.SelectedIndexChanged
        If lstOutput.SelectedIndex <> -1 Then
            Dim rec As Record = lstOutput.SelectedItem
            txtName.Text = rec.Name
            txtPhone.Text = rec.Phone
        End If
    End Sub

End Class
于 2013-11-03T08:57:40.630 に答える
0

リストボックスの選択が変更されたとき、そのイベントハンドラを取得します。イベントハンドラでは、実際に選択された項目とそのプロパティを取得できます。イベントハンドラでこれらのプロパティを 2 つのテキストボックスに追加します

準備ができていても何か問題がある場合は、変数を確認してください。それらのすべてが正しい値を持っていますか?

于 2013-11-03T07:48:59.523 に答える