我正在尝试弄清楚如何获取文本框(价格)中的值,该值是通过临时变量和数组放在文本框中的,并将其更改为十进制值,以便我可以对总销售额进行求和,然后使用相同的数组对另一个文本框中的总权重求和。我已经用这个工作了大约5个小时,用我的书和在线网站搜索,但什么都不起作用。我卡在私有子购买按钮程序中,(倒数第二)。我的总项目计数器正常工作,我还设置了subTotal十进制和totalWeightDecimal计数器,以确保消息框正常工作,但我想将+= 1更改为正确的代码,我就是找不到它。我试过解析,但是不行。Change textbox.textI包含了我的全部代码,供人查看。我知道我有太多的私有变量,只是等待在我摆脱它们之前弄清楚所有的事情。任何帮助都将不胜感激。总而言之,在整个项目中,我至少花了15个小时。感谢您的时间和努力。
'Declare Item Structure.
Structure Item
Dim upcString As String
Dim nameString As String
Dim descriptionString As String
Dim weightString As String
Dim priceDecimal As Decimal
End Structure
'Declare the ItemPrices Structure
Public Structure ItemPrices
Dim itemdescriptionString As String
Dim itempriceDecimal As Decimal
Dim itemweightDecimal As Decimal
Dim itemupcInteger As Integer
End Structure
Public Class lab7Form
Private price1Decimal As Decimal
Private subTotalDecimal As Decimal
Private grandTotalDecimal As Decimal
Private totalDecimal As Decimal
Private totalItemsInteger As Integer
Private MessageString As String
Private totalWeightDecimal As Decimal
Dim myItem As Item
Private ItemPricesArray(3) As ItemPrices
Private Sub exitButton_Click(sender As System.Object, e As System.EventArgs) Handles exitButton.Click
If MsgBox("Click Yes to Exit, Click No to Cancel", MsgBoxStyle.YesNo, "You Decide") = MsgBoxResult.Yes Then
Me.Close()
End If
End Sub
Private Sub clearButton_Click(sender As System.Object, e As System.EventArgs) Handles clearButton.Click
'Clear the textbox values.
upcTextBox.Text = ""
descriptionTextBox.Text = ""
weightTextBox.Text = ""
priceTextBox.Text = ""
End Sub
Private Sub lab7Form_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'Load my itemsListbox with the items for the user.
itemsListBox.Items.Add("Notebook PC")
itemsListBox.Items.Add("Deskjet Printer")
itemsListBox.Items.Add("Color Ink Cartridge")
itemsListBox.Items.Add("Black Ink Cartridge")
'Load the ItemPricesArray values.
ItemPricesArray(0).itemdescriptionString = "Notebook PC"
ItemPricesArray(1).itemdescriptionString = "Deskjet Printer"
ItemPricesArray(2).itemdescriptionString = "Color Ink Cartridge"
ItemPricesArray(3).itemdescriptionString = "Black Ink Cartridge"
ItemPricesArray(0).itempriceDecimal = 1500D
ItemPricesArray(1).itempriceDecimal = 430D
ItemPricesArray(2).itempriceDecimal = 11D
ItemPricesArray(3).itempriceDecimal = 10D
ItemPricesArray(0).itemweightDecimal = 7D
ItemPricesArray(1).itemweightDecimal = 16D
ItemPricesArray(2).itemweightDecimal = 0.5D
ItemPricesArray(3).itemweightDecimal = 0.5D
ItemPricesArray(0).itemupcInteger = 111111111
ItemPricesArray(1).itemupcInteger = 222222222
ItemPricesArray(2).itemupcInteger = 333333333
ItemPricesArray(3).itemupcInteger = 444444444
End Sub
Private Sub itemsListBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles itemsListBox.SelectedIndexChanged
descriptionTextBox.Text = itemsListBox.Text
'I am using a table lookup Do/Loop here.
Dim myBoolean As Boolean 'True = I found an items price.
Dim indexInteger As Integer = 0
Do Until myBoolean Or indexInteger > 3
With Me
If .descriptionTextBox.Text = ItemPricesArray(indexInteger).itemdescriptionString Then
.priceTextBox.Text = ItemPricesArray(indexInteger).itempriceDecimal.ToString("C")
.weightTextBox.Text = ItemPricesArray(indexInteger).itemweightDecimal.ToString()
.upcTextBox.Text = ItemPricesArray(indexInteger).itemupcInteger.ToString()
myBoolean = True
Else
indexInteger += 1
End If
End With
Loop
End Sub
Private Sub purchaseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles purchaseButton.Click
Dim DecNumber1 As Decimal
'Parse Numbers
DecNumber1 = Decimal.Parse(priceTextBox.Text)
If purchaseButton.Enabled And priceTextBox.Text <> "" Then
'Calculate the quantities
totalItemsInteger += 1 'I can't figure out how to total up the weights and prices when they are both local variables.
subTotalDecimal += DecNumber1
totalWeightDecimal += 1
'From Page 172 Put together what you want to appear in message boxes
Dim MessageString As String
Dim totalString As String
Dim numberOfItemsString As String
Dim weightOfItemsString As String
numberOfItemsString = totalItemsInteger.ToString()
totalString = subTotalDecimal.ToString("C")
weightOfItemsString = totalWeightDecimal.ToString("N")
MessageString = "Total Items : " & numberOfItemsString &
Environment.NewLine & "Total Weight: " & weightOfItemsString &
Environment.NewLine & "Subtotal: " & totalString
'Display the message box
MessageBox.Show(MessageString, "Items Purchased", MessageBoxButtons.OKCancel)
End If
End Sub
Private Sub totalButton_Click(sender As System.Object, e As System.EventArgs) Handles totalButton.Click
Dim numberofOrdersString As String
If totalButton.Enabled Then
numberofOrdersString = "Number of Orders: " & totalItemsInteger.ToString()
MessageString = "Total Sales: " & grandTotalDecimal.ToString("C")
'Display the message box
MessageBox.Show(MessageString, "Items Purchased", MessageBoxButtons.OKCancel)
End If
End Sub
End Class发布于 2013-10-10 10:22:33
您需要遍历ItemPrices对象数组,如下所示:
Dim itempriceDecimalTotal As Decimal
Dim itemweightDecimalTotal As Decimal
For Each theItemPrices As ItemPrices In ItemPricesArray
itempriceDecimalTotal += theItemPrices.itempriceDecimal
itemweightDecimalTotal += theItemPrices.itemweightDecimal
Next现在您可以将值转换为字符串,如下所示:
Dim MessageString As String
Dim totalString As String
Dim numberOfItemsString As String
Dim weightOfItemsString As String
numberOfItemsString = totalItemsInteger.ToString()
totalString = itempriceDecimalTotal.ToString("C")
weightOfItemsString = itemweightDecimalTotal.ToString("N")最后,您可以在消息框中显示合计值,如下所示:
MessageString = "Total Items : " & numberOfItemsString &
Environment.NewLine & "Total Weight: " & weightOfItemsString &
Environment.NewLine & "Subtotal: " & totalString
'Display the message box
MessageBox.Show(MessageString, "Items Purchased", MessageBoxButtons.OKCancel)发布于 2013-10-10 10:55:39
只需利用LINQ扩展方法Sum,即可获得数组中所有属性的总和:
Dim grandtotal As Double = ItemPricesArray.Sum(Function(x) x.itempriceDecimal)然后,使用ToString()方法可以很好地显示为字符串:
Textbox1.Text = grandtotal.ToString("C2")'display as currency with 2 decimal places发布于 2013-10-10 11:10:28
Dim priceTotal As Double = (From itemPrice in ItemPricesArray
Select itemPrice.itempriceDecimal).Sum
Dim weightTotal As Double = (From itemPrice in ItemPricesArray
Select itemPrice.itemweightDecimal).Sumhttps://stackoverflow.com/questions/19285241
复制相似问题