2013-03-10 73 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