2017-06-12 34 views
0

我目前在VB中創建一個使用文本文件來收集組合框信息的表單,然後自動使用逗號分隔的文本文件中的下一個單詞自動填充文本框。 但我寫的當前代碼顯示組合框的列表,但總是自動填充文本框的第二行的第二個單詞,並不會更改文本框後,我從組合框中選擇另一個選項可以有人幫助?如何使用文本文件從comobobox自動填充文本框

對不起,如果這不是很清楚。

我的文本文件的格式如下:

羅伯特,5 BellView路

馬丁,6 BellView路

Ect的....

我的代碼如下:

Dim LineString As String

Dim FieldStr作爲字符串()

Try 

     Dim ContactInfoStreamReader As StreamReader = New StreamReader("C:\temp\test1.txt") 

     Do Until ContactInfoStreamReader.Peek = -1 

      LineString = ContactInfoStreamReader.ReadLine() 
      FieldString = LineString.Split(CChar(",")) 
      LineString = FieldString(0) 
      ComboBox1.Items.Add(LineString) 
      Loop 
     RichTextBox2.Text = FieldString(1) 
     ContactInfoStreamReader.Close() 
    Catch ex As Exception 
     MsgBox("""Customers Name & Address.txt"" file was not found") 
    End Try 
+0

爲什麼不使用:'File.ReadAllLines()',然後只用一個'對於每個Line'? – Mederic

+0

當comboBox值更改時,您想要對文本框做什麼?你是否想將下一個comboBox的值加載到文本框? –

+0

我希望它採用逗號後的值,例如,如果我在組合框中選擇Robert,我希望文本框具有5 BellView Road,但如果選擇martin,我希望它顯示6 BellView Road。 –

回答

0

好吧,我知道你已經提供了代碼,但是這是我該怎麼做。

首先我們做一個PersonClass並創建一個Person List存儲每個Person

之後,我們讀/文本文件加載到string array,然後我們使用Linq其中逗號分割的文本文件線是否將名稱和地址分爲兩個密鑰,一個是NAME,另一個是ADDRESS

一旦做到這一點,我們遍歷每個項目,並創建一個新的Person與價值觀value.NAMEValue.Address的人的姓名和地址,以及添加人的名字爲combobox

最後我們添加一個ComboBox Event改變在Textbox's文本選定ComboBox's Index這已創建存儲每個Person

Public Class Form1 
Dim People As New List(Of Person) 

Private Sub ComboBox1_SelectedValueChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedValueChanged 
    Try 
     TextBox1.Text = People(ComboBox1.SelectedIndex).address 
    Catch 
     ''this will prevent errors if there is a name with no address 
     TextBox1.Text = "" 
    End Try 
End Sub 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    ''This is the location I used, feel free to change it here. 
    Dim location As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) 
    Dim fileName As String = "test1.txt" 
    Dim path As String = System.IO.Path.Combine(location, fileName) 

    Dim query = From line In System.IO.File.ReadAllLines(path) 
       Let val = line.Split(",") 
       Select New With {Key .NAME = val(0), Key .ADDRESS = val(1)} 

    For Each value In query 
     Dim p = New Person(value.NAME, value.ADDRESS) 
     People.Add(p) 
     ComboBox1.Items.Add(value.NAME) 
    Next 

    ''ADD OTHER COMBOBOX ITEMS HERE IF NEED BE, SO EVERYTHING IS IN ORDER 
    ComboBox1.Items.Add("ANDREW") 
End Sub 
End Class 

Class Person 
Public Property name() As String 
Public Property address() As String 
Public Sub New(name As String, address As String) 
    Me.name = name 
    Me.address = address 
End Sub 
End Class 

編輯List of People匹配:
這是我如何格式的文本文件。
Robert,5 BellView Road
Martin,6 BellView Road

+0

嗨,我剛剛嘗試了這一點,但我仍然有一個問題上面正確的排序組合框,但是當我選擇名稱時,試圖寫入文本框時出現錯誤。 (參數超出範圍例外)它在代碼的這個階段執行此操作。 Private Sub ComboBox1_SelectedValueChanged(sender As Object,e As EventArgs)Handles ComboBox1.SelectedValueChanged TextBox1.Text = People(ComboBox1.SelectedIndex)。地址 End Sub –

+0

你有沒有文本文件信息一行接一行? – Werdna

+0

是的格式是這樣的: 1號線:Robert,5 BellView Road 2號線:Martin,6 BellView Road –