Vb.net附加文本框的行

时间:2015-12-08 14:54:14

标签: vb.net

        Case 0
            MyValues(0) = InputBox("Geef de wisselkoers (> 0 en < 500) voor de Euro tov Amerikaanse dollars (1 Eur = .... Amerikaanse Dollars")
            Do Until MyValues(0) >= 0 And MyValues(0) <= 500
                MsgBox("De parameters vallen buiten de wisselkoers. Lees de text nog maals in het volgende scherm")
                MyValues(0) = InputBox("Geef de wisselkoers (> 0 en < 500) voor de Euro tov Amerikaanse dollars (1 Eur = .... Amerikaanse Dollars")
            Loop
            Wisselkoersenlistbox.Text = String.Join(Environment.NewLine, MyValues)
        Case 2
            MyValues(1) = InputBox("Geef de wisselkoers (> 0 en < 500) voor de Euro tov Britse Ponden (1 Eur = .... Britse Ponden")
            Do Until MyValues(1) >= 0 And MyValues(1) <= 500
                MsgBox("De parameters vallen buiten de wisselkoers. Lees de text nog maals in het volgende scherm")
                MyValues(1) = InputBox("Geef de wisselkoers (> 0 en < 500) voor de Euro tov Amerikaanse dollars (1 Eur = .... Amerikaanse Dollars")
            Loop
            Wisselkoersenlistbox.Text = String.Join(Environment.NewLine, MyValues)

现在有效: - )非常感谢!!!!! 我点击了一个加号但是在我达到15之前不能放弃:(

1 个答案:

答案 0 :(得分:1)

正如@the_lotus在评论中提到的那样,您正试图在文本框中存储日期并在那里进行操作。这提出了很多问题。将信息存储在数组中更容易,根据需要更新它,然后在信息更改时重建文本框内容......

' Declare a variable to hold your messages. I've gone with 5 here but it can be any reasonable number (or you can use ReDim to change size later if you don't know from the start)
Dim MyMessages(5) As String {"Default Values go here (if any)", "Line2", "Line3", String.Empty, String.Empty}

' Update them as required in your existing Select Case statement

Case 0
    ' ... Other code ...
    ' Update message at index 0 (Line #1) to be whatever they input
    MyMessages(0) = InputBox("Geef de wisselkoers (> 0 en < 500) voor de Euro tov Amerikaanse dollars (1 Eur = .... Amerikaanse Dollars")
Case 1
    ' ... Other code ...
    ' Update message at index 1 (Line #2) to be "Something"...
    MyMessages(1) = "Something"

' ...etc...


' Finally, update the textbox so all messages are shown one-per-line

MessageBox1.Text = String.Join(Environment.NewLine, MyMessages)

Re:关于格式化的评论

你正在尝试的正确语法就是这个......

Wisselkoersenlistbox.Text = String.Join(" amerikaanse Dollar" & Environment.NewLine & "1 Euro = ", MyValues)

不幸的是,这不是很有帮助,因为它只将字符串放在值之间,而不是在第一个之前或最后一个之后。

更有用的是简单地格式化变量,因为它们被添加到数组中......

Dim format = "1 Euro = {0:0.00} amerikaanse Dollar"
Dim input = Double.Parse(InputBox("..."))
MyMessages(x) = String.Format(format, input)

我们提供的格式字符串显示了放置数字的位置,并且它应该始终显示2个小数位(不多于/少于)。

值得注意的是,不建议使用使用单数据或双数据类型的货币 - 随着数字变大,准确度会降低(只是how floating point arithmetic works的副作用)。显示信息/计算近似值可能没什么问题,但是你应该将它用于任何严重的事情,特别是当结果一起使用并且错误可以复合时。

举个例子,尝试做类似的事情:

Dim Total as Double
For i = 1 to 1000000
    Total = Total + 1 / 1000000
Next i

直观地说,Total在此循环结束时应该恰好为1。事实上,它会略高于或低于i

对于货币,请使用Decimal数据类型并指定所需的适当精确度。