0

VB.NET で作成した注文フォームと、注文ごとに入力される ListBox があります。注文をダブルクリックすると、注文フォームに注文番号が入力されます。私が抱えている問題は、注文番号と人の名前の両方を TextBox に入力することです。デリミタを使用して、名前ではなく注文番号のみを引き出すにはどうすればよいですか。

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
4

2 に答える 2

0

あなたはほとんどそこにいます。split 関数を使用することもできますが、別の方法として、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 関数をオーバーライドして、Listbox 内のテキストに必要な値が表示されるようにする必要があります (例: Return ID & "," & " " & Server) 。

于 2013-03-10T13:29:11.747 に答える
0

すべてのデータが単一のフィールドとして保存されている場合、または次のようになります。

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

次に、各レコードを文字列として読み取り、区切り文字として " " に基づいて配列に分割します。

コードは次のようになります。

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

そして、その形式で、

textBoxName.Text = myArray[1]
于 2013-03-10T04:50:01.877 に答える