我正在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
答案 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
事件。我使用两个布尔标志来防止这种情况。