2013-03-10 81 views
0

我有一個在VB.NET中創建的訂單表單,並且我有一個按訂單填充的列表框。您可以雙擊訂單並在訂單表格中填入訂單號。我遇到的問題是它使用訂單號和人名填充文本框。我怎樣才能使用分隔符只提取訂單號碼,而不是名稱。從列表框中讀取單個單詞vb

Imports Business_Objects 

Public Class frmSummary 
    Private ctrl As Controller 
    Dim listID As ArrayList 

    Private Sub frmSummary_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    ctrl = CType(MdiParent, frmMain).ctrl 
    Dim list As ArrayList 
    list = ctrl.GetOrders 
    Dim order As Business_Objects.Order 
    For Each order In list 
     lstOrders.Items.Add(order.ID & "," & " " & order.Server) 
    Next 
    End Sub 

    Private Sub lstOrders_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstOrders.DoubleClick 
    Dim result As Boolean = False 
    If lstOrders.Text <> "" Then 
     result = True 
     Dim frm As New OrderForm 
     frm.MdiParent = Me.MdiParent 
     frm.Show() 
     frm.txtOrderNo.Text = lstOrders.Text 
     frm.btnFetch.PerformClick() 
    Else 
     MessageBox.Show("there are no orders here to click") 
    End If 
    End Sub 

    Private Sub btnRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRefresh.Click 
    lstOrders.Items.Clear() 
    ctrl = CType(MdiParent, frmMain).ctrl 
    Dim list As ArrayList 
    list = ctrl.GetOrders 
    Dim order As Business_Objects.Order 
    For Each order In list 
     lstOrders.Items.Add(order.ID & " " & order.Server) 
    Next 
    End Sub 
End Class 
+0

你是如何存儲數據?文本文件?通常,你的數據已經被某些東西分隔了。例如,這段可以看作是由空格分隔的,所以可以使用string array = paragraph.split(「」)來填充索引爲0的任何內容以獲得段落中的第一個條目。 – 2013-03-10 04:26:51

+0

它存儲在視覺工作室sql compact數據庫 – Mccoy85 2013-03-10 04:32:35

+0

最好的辦法是不要將名稱和順序保存爲表中的一個屬性。這聽起來像是你將所有數據提交爲單個記錄?是對的嗎? – 2013-03-10 04:37:16

回答

0

如果所有的數據被存儲爲單個字段,或者是這樣的:

4322305 John Smith Carrots $3.00 
845825 Sam White Oranges $1.25 

然後你就可以讀取每個記錄爲一個字符串,然後使用到基於陣列的拆分以「」作爲分隔符。

的代碼看起來是這樣的:

dim myArray as string() = myLongTextRecord.Split(" ") 

而且該格式,

textBoxName.Text = myArray[1] 
0

你幾乎沒有。您可以使用拆分功能,但另一種方法是將Order對象直接添加到列表框而不是文本。

Private Sub frmSummary_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    ctrl = CType(MdiParent, frmMain).ctrl 
    Dim list As ArrayList 
    list = ctrl.GetOrders 
    Dim order As Business_Objects.Order 
    For Each order In list 
     lstOrders.Items.Add(order) 
    Next 
    End Sub 

    Private Sub lstOrders_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstOrders.DoubleClick 
    Dim result As Boolean = False 
    If lstOrders.Text <> "" Then 
     result = True 
     Dim frm As New OrderForm 
     frm.MdiParent = Me.MdiParent 
     frm.Show() 
     frm.txtOrderNo.Text = DirectCast(lstOrders.SelectedItem, Order).ID.ToString 
     frm.btnFetch.PerformClick() 
    Else 
     MessageBox.Show("there are no orders here to click") 
    End If 
    End Sub 

你需要進入Order對象和覆蓋的ToString功能,使任何你想要的值在列表框中顯示的文本(即Return ID & "," & " " & Server