簡體   English   中英

VB Windows窗體在多行文本框中計算數字

[英]VB windows form calculate the digit in a multiline textbox

我要計算每行:就像第一行123 * 1.616和第二行213 * 1.616,並顯示每個總計。 公斤文本框中輸入的每個數字將多為1.616,然后在kati標簽中顯示結果。 這是我的代碼:

Private Sub b1_Click(sender As Object, e As EventArgs) Handles b1.Enter

For Each digit In (TextBox1.Text)
            total1 = Val(digit) * 1.616
            Label9.Text = total1
        Next

        Label9.Text = total1
End sub

請幫助我找到一些解決方案或解釋以實現輸出。

在此處輸入圖片說明在此處輸入圖片說明

這應該工作

Private FACTOR As Decimal = 1.616
Private SEPARATOR As String = Environment.NewLine

Private Sub b1_Click(sender As Object, e As EventArgs) Handles b1.Click
    Label9.Text = TextBox1.Text.
        Split({SEPARATOR}, StringSplitOptions.RemoveEmptyEntries).
        Select(Function(s1) $"{Decimal.Parse(s1) * FACTOR:0.00#}").
        Aggregate(Function(s1, s2) $"{s1}{SEPARATOR}{s2}")
End Sub

這是LINQ中的功能

  • Split使用SEPARATOR作為分隔符,在TextBox中的每一行中組成一個數組
  • Select將元素轉換為其值乘以FACTOR
  • Aggregate將元素放回到由SEPERATOR分隔的字符串中

您的原始代碼為什么不起作用?

  • 您正在遍歷文本中的每個字符,並將字符乘以浮點數(如注釋中所建議的Option Strict On可以避免這種情況)。
  • 然后,在每次迭代中,您Label9.Text = Val(digit) * 1.616 (簡化) Label9.Text = Val(digit) * 1.616 ,每次都會覆蓋Label。
  • 如果你在調試(也建議在評論)來進入,你會看到標簽成為1 x1.616 = 1.616,2 x1.616 = 3.232,3 x1.616 = 4.848,等等。結果是最后文本框中的字符 “ 3”乘以1.161 = 4.848。 顯然,這不是您想要的。 您需要遍歷每個整數。 多行文本框用新行分隔每行。 因此,我們改為遍歷每

您可以通過vbCrLf使用分割字符串

Sub main()


  Dim multilinetext As String =
    "10
     20
     30
     40
     50
     60"

    Dim number_array = multilinetext.Split(vbCrLf)
    Dim output As Integer = 0
    For Each i In number_array
        output += i
    Next
    Stop
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM