У меня возникла странная проблема с этой программой VB, над которой я работаю. Я честно не совсем уверен, почему я столкнулся с этой проблемой, потому что я сделал другие задания с легкостью, которые были относительно похожи на это. Программа предназначена для того, чтобы я мог добавлять определенные фильмы из магазина (левый список) в корзину (правый список). Вы можете видеть, что я добавил Человека-паука два раза (потому что кто не любит Человека-паука ?), и он правильно отображал имя и $ 2 каждый раз. Однако первый блок ярлыка внизу должен накапливаться каждый раз, когда я добавляю фильм в окно, но он остается устойчивым в первом фильме, который я выбираю. Если бы я выбрал любой из других фильмов, которые все дороже, он все равно останется в первом фильме, который я выбрал.Visual Basic Movie Program
EDIT: Я должен добавить, у меня была такая же проблема, прежде чем я переместил некоторые части кода в свои соответствующие функции.
Открытый класс MainForm
Public strMovies() As String =
{"Spider-Man", "Daredevil", "Hulk", "The Punisher", "Spider-Man 2",
"Fantastic Four", "Spider-Man 3", "Iron Man", "The Amazing Spider-Man", "The Wolverine"}
Public intMoviePrices() As Integer =
{2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
Dim X As Integer
Dim Y As Integer
Dim moviecost As Integer
Dim movietax As Double
Dim numberdvds As Integer
Dim shippingcharge As Double
Dim netcost As Double
Dim movieChoice As String
Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstCom.SelectedIndexChanged
End Sub
Public Function calculateTotals(movieChoice) As Integer
moviecost = moviecost + intMoviePrices(movieChoice)
movietax = (moviecost * 1.04) - moviecost
If numberdvds >= 5 Then
shippingcharge = 5
Else
shippingcharge = numberdvds
End If
netcost = movietax + moviecost + shippingcharge
lblgrosscost.Text = moviecost
lblsalestax.Text = FormatNumber(movietax, 2)
lblshipping.Text = shippingcharge
lblnetcost.Text = netcost
Return moviecost
Return movietax
End Function
Public Function addMovie() As String
movieChoice = lstCom.SelectedIndex
For X = LBound(strMovies) To UBound(strMovies)
If lstCom.SelectedIndex = X Then
lstCom2.Items.Add(strMovies(X) & " $" + intMoviePrices(movieChoice).ToString)
numberdvds += 1
Call calculateTotals(movieChoice)
End If
Next
End Function
Public Function removeMovie() As String
For X = LBound(strMovies) To UBound(strMovies)
If lstCom2.SelectedIndex = X Then
lstCom2.Items.Remove(lstCom2.SelectedItem)
numberdvds -= 1
Call calculateTotals(movieChoice)
End If
Next
End Function
Private Sub mainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
lstCom.Items.Add("Spider-Man")
lstCom.Items.Add("Daredevil")
lstCom.Items.Add("Hulk")
lstCom.Items.Add("The Punisher")
lstCom.Items.Add("Spider-Man 2")
lstCom.Items.Add("Fantastic Four")
lstCom.Items.Add("Spider-Man 3")
lstCom.Items.Add("Iron Man")
lstCom.Items.Add("The Amazing Spider-Man")
lstCom.Items.Add("The Wolverine")
lstCom.SelectedIndex = 0
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
Call addMovie()
End Sub
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Me.Close()
End Sub
Private Sub btnRemove_Click(sender As Object, e As EventArgs) Handles btnRemove.Click
Call removeMovie()
End Sub
End Class
Возможно, вы захотите изменить свой тег на VBA на VB.Net или используемую вами производную Visual Basic, а не на форму VBA :). –
@ Dan Donoghue это просто может быть на стероидах ... – Codexer
Спасибо, Дэн, возможно, поэтому я получал downvotes или потому, что это был глупый вопрос. Я ценю вашу помощь. Сейчас я играю с вашим ответом! –