我想制作双向的 am/s 到 km/h 转换器,就像谷歌所做的那样。我在 WPF 中使用了 TextChanged,它还挺有效的。我的问题是,当我输入例如 7 时,程序会在同一字段中写入 6,9999999...。我怀疑这是因为 2 个字段来回转换并找到最精确的数字。
我希望它每个字段只转换一次。因此,如果我在 km/h 字段中键入 7,它应该只转换为 m/s 然后停止。
我用于该程序的 2 种方法:
private void ms_TextChanged(object sender, TextChangedEventArgs e)
{
if (ms.Text == "")
{
kmh.Text = "";
}
else
{
try
{
kmh.Text = (double.Parse(ms.Text) * 3.6).ToString();
kmh.CaretIndex = kmh.Text.Length;
}
catch (Exception)
{
MessageBox.Show("Input must be a valid number");
}
}
}
private void kmt_TextChanged(object sender, TextChangedEventArgs e)
{
if (kmh.Text == "")
{
ms.Text = "";
}
else
{
try
{
ms.Text = (double.Parse(kmh.Text) / 3.6).ToString();
ms.CaretIndex = ms.Text.Length;
}
catch (Exception)
{
MessageBox.Show("Input must be a valid number");
}
}
}