У меня есть два текстовых поля на Winform. Идея состоит в том, чтобы вводить градусы Фаренгейта в одно поле и отображать градусы Цельсия в другом при вводе данных пользователем, и наоборот.
У меня он работает нормально, используя метод «Оставить» текстового поля, но я пытался использовать метод TextChanged, чтобы не щелкать или нажимать кнопку для получения результата.
Проблема, с которой я столкнулся сейчас, заключается в том, что при обработке первого символа фокус перемещается на второе поле, которое запускает метод TextChanged.
Я попытался использовать отправителя, чтобы включить if(), но отправитель теперь является полем назначения.
Любые мысли, пожалуйста?
private void TB_Fahrenheit_TextChanged(object sender, EventArgs e)
{
float C, F;
if (TB_Fahrenheit.Text != "")
{
if (float.Parse(TB_Fahrenheit.Text) < 1.0F)
{
TB_Fahrenheit.Text = "0" + TB_Fahrenheit.Text;
}
F = float.Parse(TB_Fahrenheit.Text);
C = ((F - 32) * 5) / 9;
TB_Celcius.Text = C.ToString();
}
}
private void TB_Celcius_TextChanged(object sender, EventArgs e)
{
float C, F;
string SentBy = ((TextBox)sender).Name;
MessageBox.Show(SentBy);
return;
if(SentBy != TB_Fahrenheit.Text)
{
if (TB_Celcius.Text != "")
{
if (float.Parse(TB_Celcius.Text) < 1.0F)
{
TB_Celcius.Text = "0" + TB_Celcius.Text;
}
C = float.Parse(TB_Celcius.Text);
F = ((C * 9) / 5) + 32;
TB_Fahrenheit.Text = F.ToString();
}
}
}
private void TB_Celcius_Enter(object sender, EventArgs e)
{
TB_Celcius.Clear();
TB_Fahrenheit.Clear();
}
private void TB_Fahrenheit_Enter(object sender, EventArgs e)
{
TB_Celcius.Clear();
TB_Fahrenheit.Clear();
}