#vb.net
#vb.net
Вопрос:
Здравствуйте, я написал следующие коды для обработки выбора флажков в форме. общая сумма должна быть увеличена на основе разрезов, а затем отображена. Кто-нибудь, пожалуйста, помогите мне, как справиться с этим. Вот как я обрабатываю выборки и пытаюсь вычислить общую сумму.
Private Sub computeCurrentSelection()
If chkugalis.Checked = True Then 'ugali fish selected
orderAmt = lab.Text
total = ugalif * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " plates of" amp; " Ugali n fish " amp; " Kshs" amp; total)
End If
If chkGitheri.Checked = True Then 'ugali dengu slected
orderAmt = lab3.Text
total = ugalid * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " plates of " amp; "Ugali n dengu " amp; " Kshs" amp; total)
End If
If chkUgaliB.Checked = True Then 'githeri selected
orderAmt = lab2.Text
total = githeri * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " plates of " amp; "Githeri " amp; " Kshs" amp; total)
End If
If chkPilau.Checked = True Then
orderAmt = lab4.Text
total = chapo * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " plates of " amp; "Pilau " amp; " Kshs" amp; total)
End If
If chkPizza.Checked = True Then
orderAmt = lab5.Text
total = pilau * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " plates of " amp; "Pizza " amp; " Kshs" amp; total)
End If
If chkMandazi.Checked = True Then
orderAmt = lab6.Text
total = pizza * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; "mandazi " amp; " Kshs" amp; total)
End If
If chkSamosa.Checked = True Then
orderAmt = lab7.Text
total = mandazi * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; "Samosa " amp; " Kshs" amp; total)
End If
If chkChapon.Checked = True Then
orderAmt = lab8.Text
total = samosa * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; "Chapati " amp; " Kshs" amp; total)
End If
If chkWater.Checked = True And chk300ml.Checked = True Then
orderAmt = lab9.Text
total = water1 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 300ml Water " amp; " Kshs" amp; total)
End If
If chkWater.Checked = True And chk500ml.Checked = True Then
orderAmt = lab9.Text
total = water2 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 500ml Water " amp; " Kshs" amp; total)
ElseIf chkWater.Checked = True And chk1l.Checked = True Then
orderAmt = lab9.Text
total = water3 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 1l Water " amp; " Kshs" amp; total)
End If
If chkWater.Checked = True And chk2l.Checked = True Then
orderAmt = lab9.Text
total = water4 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 2l Water " amp; " Kshs" amp; total)
End If
If chkSoda.Checked = True And chk300ml.Checked = True Then
orderAmt = lab10.Text
total = soda1 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 300ml Soda " amp; " Kshs" amp; total)
End If
If chkSoda.Checked = True And chk500ml.Checked = True Then
orderAmt = lab10.Text
total = soda2 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 500ml Soda " amp; " Kshs" amp; total)
End If
If chkSoda.Checked = True And chk1l.Checked = True Then
orderAmt = lab10.Text
total = soda3 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 1l Soda " amp; " Kshs" amp; total)
End If
If chkSoda.Checked = True And chk2l.Checked = True Then
orderAmt = lab10.Text
total = soda4 * orderAmt
lstReceipt.Items.Add(orderAmt amp; " Bottles of 2l Soda " amp; " Kshs" amp; total)
End If
If chkJuice.Checked = True And chk300ml.Checked = True Then
orderAmt = lab11.Text
total = juice1 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 300ml juice " amp; " Kshs" amp; total)
End If
If chkJuice.Checked = True And chk500ml.Checked = True Then
orderAmt = lab11.Text
total = juice2 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 500ml juice " amp; " Kshs" amp; total)
End If
If chkJuice.Checked = True And chk1l.Checked = True Then
orderAmt = lab11.Text
total = juice3 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 1l juice " amp; " Kshs" amp; total)
End If
If chkJuice.Checked = True And chk2l.Checked = True Then
orderAmt = lab11.Text
total = juice4 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 2l juice " amp; " Kshs" amp; total)
End If
End Sub
Комментарии:
1. Общая сумма должна быть рассчитана из отдельных элементов чекбокса, т.е. если чкугались. Проверено = True, затем ‘угали рыбу, выбранную orderAmt = lab. Текстовый итог = ugalif * Промежуточный итог orderAmt = общий lstReceipt. Товары. Добавить (упорядочить и «тарелки», «Угали рыбу», «КШС» и всего) Завершить, если ` но промежуточный итог должен быть суммой итогов всех выбранных флажков, т.е. Если установлен только один флажок, то промежуточный итог должен быть только суммой флажков, но если выбрано более одного, то промежуточный итог должен быть суммой итогов всех выбранныхустановите флажки.
Ответ №1:
Я не уверен, правильно ли я понял, но я попробую.
Попробуйте это:
Private Function ComputeCurrentSelection() As Integer ' not sure for data type, you decide
Dim total As Integer
If chkugalis.Checked = True Then 'ugali fish selected
orderAmt = lab.Text
total = ugalif * orderAmt
lstReceipt.Items.Add(orderAmt amp; " plates of" amp; " Ugali n fish " amp; " Kshs" amp; total)
End If
If chkGitheri.Checked = True Then 'ugali dengu slected
orderAmt = lab3.Text
total = ugalid * orderAmt
lstReceipt.Items.Add(orderAmt amp; " plates of " amp; "Ugali n dengu " amp; " Kshs" amp; total)
End If
If chkUgaliB.Checked = True Then 'githeri selected
orderAmt = lab2.Text
total = githeri * orderAmt
lstReceipt.Items.Add(orderAmt amp; " plates of " amp; "Githeri " amp; " Kshs" amp; total)
End If ...
Return total
End Function
Ответ №2:
Я пробовал это
Private Sub computeCurrentSelection()
If chkugalis.Checked = True Then 'ugali fish selected
orderAmt = lab.Text
total = ugalif * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " plates of" amp; " Ugali n fish " amp; " Kshs" amp; total)
End If
If chkGitheri.Checked = True Then 'ugali dengu slected
orderAmt = lab3.Text
total = ugalid * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " plates of " amp; "Ugali n dengu " amp; " Kshs" amp; total)
End If
If chkUgaliB.Checked = True Then 'githeri selected
orderAmt = lab2.Text
total = githeri * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " plates of " amp; "Githeri " amp; " Kshs" amp; total)
End If
If chkPilau.Checked = True Then
orderAmt = lab4.Text
total = chapo * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " plates of " amp; "Pilau " amp; " Kshs" amp; total)
End If
If chkPizza.Checked = True Then
orderAmt = lab5.Text
total = pilau * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " plates of " amp; "Pizza " amp; " Kshs" amp; total)
End If
If chkMandazi.Checked = True Then
orderAmt = lab6.Text
total = pizza * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; "mandazi " amp; " Kshs" amp; total)
End If
If chkSamosa.Checked = True Then
orderAmt = lab7.Text
total = mandazi * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; "Samosa " amp; " Kshs" amp; total)
End If
If chkChapon.Checked = True Then
orderAmt = lab8.Text
total = samosa * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; "Chapati " amp; " Kshs" amp; total)
End If
If chkWater.Checked = True And chk300ml.Checked = True Then
orderAmt = lab9.Text
total = water1 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 300ml Water " amp; " Kshs" amp; total)
End If
If chkWater.Checked = True And chk500ml.Checked = True Then
orderAmt = lab9.Text
total = water2 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 500ml Water " amp; " Kshs" amp; total)
ElseIf chkWater.Checked = True And chk1l.Checked = True Then
orderAmt = lab9.Text
total = water3 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 1l Water " amp; " Kshs" amp; total)
End If
If chkWater.Checked = True And chk2l.Checked = True Then
orderAmt = lab9.Text
total = water4 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 2l Water " amp; " Kshs" amp; total)
End If
If chkSoda.Checked = True And chk300ml.Checked = True Then
orderAmt = lab10.Text
total = soda1 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 300ml Soda " amp; " Kshs" amp; total)
End If
If chkSoda.Checked = True And chk500ml.Checked = True Then
orderAmt = lab10.Text
total = soda2 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 500ml Soda " amp; " Kshs" amp; total)
End If
If chkSoda.Checked = True And chk1l.Checked = True Then
orderAmt = lab10.Text
total = soda3 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 1l Soda " amp; " Kshs" amp; total)
End If
If chkSoda.Checked = True And chk2l.Checked = True Then
orderAmt = lab10.Text
total = soda4 * orderAmt
lstReceipt.Items.Add(orderAmt amp; " Bottles of 2l Soda " amp; " Kshs" amp; total)
End If
If chkJuice.Checked = True And chk300ml.Checked = True Then
orderAmt = lab11.Text
total = juice1 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 300ml juice " amp; " Kshs" amp; total)
End If
If chkJuice.Checked = True And chk500ml.Checked = True Then
orderAmt = lab11.Text
total = juice2 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 500ml juice " amp; " Kshs" amp; total)
End If
If chkJuice.Checked = True And chk1l.Checked = True Then
orderAmt = lab11.Text
total = juice3 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 1l juice " amp; " Kshs" amp; total)
End If
If chkJuice.Checked = True And chk2l.Checked = True Then
orderAmt = lab11.Text
total = juice4 * orderAmt
subtotal = total
lstReceipt.Items.Add(orderAmt amp; " Bottles of 2l juice " amp; " Kshs" amp; total)
End If
End Sub
и это сработало, но он вычисляет и сохраняет промежуточный итог, таким образом обновляя его везде, где я вызываю computeCurrentSelection() , например, если при первом вызове промежуточный итог был равен 10, попробуйте очистить предыдущий итог и обновить его следующим образом
Private Sub updateTotal()
lstTotal.Items.Clear()
lstTotal.Items.Add("Sub Total =" amp; subtotal)
End Sub
очистка не работает, но вместо этого продолжает увеличивать текущее значение промежуточного итога на предыдущее, пока я не обновлю программу.
Как я могу это решить?