さて、大学の課題の一部を手伝ってもらいましたが、あと 1 つだけ、データを表示する必要があります。問題の割り当てでは、ユーザーは ID 番号で製品を検索し、その説明、日次、週次、月次のレンタル料金、および在庫数量を、フォームに既にある TextBox コントロールに表示できます。別のクラスの辞書。これは編集目的でもあります (以下の注を参照)。さらに、ID 変数を ComboBox のコレクションに追加する際に問題が発生しています。これは、Dictionary を読み込んでアイテムを追加するときに発生します。これは簡単な修正であると確信していますが、思い出すのに助けが必要です。何だ、それだけだ。
表示ボタンのコードを含む frmMain のコードを次に示します (見た目が荒いので気にしないでください)。
Imports System.IO
Public Class frmMain
Dim dItem As New Inventory
Dim filePath = ofdOpenFile.FileName
Public Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
Me.Close()
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
Dim ID As String = cboID.Text
Dim Desc As String = txtDescription.Text
Dim DRate As Double = txtDaily.Text
Dim WRate As Double = txtWeekly.Text
Dim MRate As Double = txtMonthly.Text
Dim Quantity As Integer = txtQuantity.Text
dItem.addItem(ID, Desc, DRate, WRate, MRate, Quantity)
End Sub
Private Sub btnRemove_Click(sender As Object, e As EventArgs) Handles btnRemove.Click
Dim ID As String = cboID.Text
dItem.removeItem(ID)
End Sub
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
' Display data should go here
End Sub
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If ofdOpenFile.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim FileInfo As New InventoryFile
FileInfo.RFile(filePath, dItem)
cboID.DataSource = dItem.returnKeys()
End If
End Sub
End Class
私の辞書クラスのコードは次のとおりです。
Public Class Inventory
Public ItemInventory As New Dictionary(Of String, Item)
Public Function iItem(ByVal key As String) As Item
Return ItemInventory(key)
End Function
Public Sub addItem(ByVal item As String, ByVal Desc As String, ByVal DRate As Double, ByVal WRate As Double, _
ByVal MRate As Double, ByVal Quantity As Integer)
With ItemInventory
.Add(item, New Item(item, Desc, DRate, WRate, MRate, Quantity))
End With
End Sub
Public Sub removeItem(ByVal item As String)
With ItemInventory
.Remove(item)
End With
End Sub
Public Function returnKeys() As String()
Dim Keys() As String
With ItemInventory
Keys = .Keys.ToList.ToArray
End With
Return Keys
End Function
End Class
そうあるべきだと思います。必要に応じて他のクラスを追加できますが、それ以外の場合、ディクショナリにはキーと、表示する必要がある追加データを含むアイテム クラスへの参照である「アイテム」があります (一連の変数があります)。すべてが「アイテム」クラスにあるものに関して答える必要がある私の「追加」コード)。エントリを表示するには、辞書をどのように正確に参照すればよいですか?