仅文本框转换器

时间:2018-07-24 14:18:46

标签: vb.net winforms textbox converter

我正在vb.net中创建温度转换器以进行分配。我知道转换方法等等。但是问题是,我只需要使用两个文本框。一种用于摄氏温度,另一种用于摄氏温度。每当我更新摄氏度的文本框时,文本框上的更改也应发生,并且当我更改farenheit的值时,celsius文本框也应根据farenheit的值而变化。我该怎么办?

这是当前正在处理的即时消息。

 Class Form1
 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    If TextBox1.Focus() Then
        TextBox2.Clear()
        TextBox2.Text = (TextBox1.Text - 32) / 1.8
    ElseIf TextBox2.Focus() Then
        TextBox1.Clear()

        TextBox1.Text = (TextBox2.Text * 1.8) + 32
    End If
End Sub
End Class

1 个答案:

答案 0 :(得分:0)

感谢您发布一些代码。这就是我要这样做的方式(在为两个文本框连接TextChanged事件处理程序之后):

Private DegreesCChanging As Boolean = False
Private DegreesFChanging As Boolean = False

Private Sub DegreesF_TextChanged(sender As Object, e As EventArgs) Handles DegreesF.TextChanged
    If Not DegreesFChanging Then
        Dim Temperature As Double
        DegreesCChanging = True
        If Double.TryParse(DegreesF.Text, Temperature ) Then
            DegreesC.Text = ((Temperature - 32.0) / 9.0 * 5.0).ToString("0.##")
        Else
            DegreesC.Text = String.Empty
        End If
        DegreesCChanging = False
    End If
End Sub

Private Sub DegreesC_TextChanged(sender As Object, e As EventArgs) Handles DegreesC.TextChanged
    If Not DegreesCChanging Then
        Dim Temperature As Double
        DegreesFChanging = True
        If Double.TryParse(DegreesC.Text, Temperature ) Then
            DegreesF.Text = (Temperature / 5.0 * 9.0 + 32.0).ToString("0.##")
        Else
            DegreesF.Text = String.Empty
        End If
        DegreesFChanging = False
    End If
End Sub

有几件事要注意。

  • 我正在使用TextChanged事件-用户键入后 在任一文本框中输入内容,世界开始发生变化
  • 我使用double.TryParse将数字转换为字符串。如果我不知道发生了什么(即TryParse调用返回False),则在另一个文本框中插入一个空字符串。效果很好。
  • 当用户在文本框中键入内容时,会导致一个TextChanged事件,该事件将新文本强行插入另一个文本框中-这将导致该控件的TextChanged事件。我使用两个布尔标志来防止这种情况。
  • 我在ToString调用中使用自定义数字格式字符串来限制 精度到小数点后两位。
相关问题