VB-在特定值更改时执行计算并更新结果

时间:2018-10-27 19:58:10

标签: vb.net

我该如何计算虚拟的“服务”必须支付的金额,以及在“服务会话”持续进行的情况下如何更新结果?

我有四个TextBox

  • 第一个(TextBox1)包含服务会话的开始时间
  • 第二个(TextBox2)包含会话的持续时间
  • 第三个(TextBox3)包含一个固定值25.36
  • 第四个(TextBox4)将显示计算结果

当会话时长(值TextBox2)改变时,我想更新TextBox4中的结果。会话持续的每一小时,应将25.36欧元(TextBox3)的固定值添加到结果中。我该如何实现?

这是我尝试过的:

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Me.Timer1.Enabled = True
    Me.TextBox1.Text = Now.ToLongTimeString.ToString()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Try
        Dim StartTime As DateTime = Me.TextBox1.Text
        Dim EndTime As DateTime = Now.ToLongTimeString.ToString
        Dim TotalTime As TimeSpan = EndTime - StartTime
        Me.TextBox2.Text = (TotalTime).ToString
    Catch ex As Exception
    End Try
End Sub
End Class

1 个答案:

答案 0 :(得分:0)

只需记录开始和结束时间,从结束开始扣除,即可获得持续时间。通过获取DateTime.Now

或者,如果您想使用计时器,只需跟踪秒(或其他)即可。

Dim Seconds as Integer
Sub TimerTick
    Seconds +=1
End Sub

然后将持续时间乘以每个时间范围的付款。 如果您跟踪秒数并以小时为单位付款,则只需

seconds * payment/60/60

Dim StartTime As DateTime
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    StartTime = DateTime.Now
    Timer1.Start()
    TextBox1.Text = StartTime.ToLongTimeString
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Dim TotalTime As TimeSpan = DateTime.Now - StartTime
    TextBox2.Text = TotalTime.TotalSeconds.ToString("0")
    Dim Payment As Double = TotalTime.TotalHours * CInt(TextBox3.Text)
    TextBox4.Text = Payment.ToString("C", Globalization.CultureInfo.GetCultureInfo("de-DE"))
End Sub

enter image description here