-2
ユーザーはピザ、サイズなどを選択し、ピザはバスケット(listview)に追加されます。フォームはクリアされますが、ユーザーは追加ボタンを再度クリックすると、不要な行がリストビューに追加されます。私は、新しいレコードを追加する前にチェックボックスがチェックされているかどうかを確認するforループを実装しようとしました。その結果、必要なレコードがリストビューに追加されますが、メッセージはx回ポップアップします。この繰り返しのメッセージボックスは、チェックボックスなしのボタンをクリックしたときにも発生します。助けてください?リストビューへの複数の追加の防止
'Add Pizza to Listview
Private Sub btnAddPizza_Click(sender As Object, e As EventArgs) Handles btnAddPizza.Click
Dim itemname As String
Dim price As Decimal
Dim qty As Integer
grandtotal = 0
'Add to list view
For Each rb1 In {rb01, rb02, rb03, rb04, rb05, rb06, rb07, rb08, rb09, rb10, rb11, rb12, rb13, rb14, rb15}
If rb1.Checked = True Then
itemname = GetCheckedItem()
price = CDec(pizzacost)
qty = 1
ListView1.Items.Add(New ListViewItem({itemname, qty, price}))
ElseIf rb1.Checked = False Then
MsgBox("No pizza is selected", MsgBoxStyle.Information)
End If
Next
'recalculate grandtotal (bottom of listview)
For Each x As ListViewItem In ListView1.Items
grandtotal += CDec(x.SubItems(2).Text)
Next
lblGrandTotal.Text = "£ " & grandtotal
'Discard Pizza selection
For Each rb In {rb01, rb02, rb03, rb04, rb05, rb06, rb07, rb08, rb09, rb10, rb11, rb12, rb13, rb14, rb15}
rb.Checked = False
Next
For Each rb In {rbSmall, rbMedium, rbLarge, rbSuper}
rb.Checked = False
Next
For Each rb In {rbDeep, rbThin, rbStuffed}
rb.Checked = False
Next
lblTotalPizza.Text = ""
itemname = ""
price = 0
End Sub
伝説のもの!ありがとうございます – James
LINQは行く方法です。私は個人的にラジオボタンのクリックハンドラで 'btnAddPizza.Enabled = radioButtons.Any(Function(rb)rb.Checked)'を持っています – djv