WPF里面 需要两个TextBox联动就是一个文本框里面输入数值 另一个通过公式去计算
private void txt1_TextChanged(object sender, TextChangedEventArgs e)
{
if (txt1.Text != "" && txt1.Text != null)
txt2.Text = (Convert.ToDecimal(txt1.Text.ToString()) * Convert.ToDecimal(a.ToString()) * Convert.ToDecimal(b.ToString())).ToString();
else
txt2.Text = null;
} private void txt2_TextChanged(object sender, TextChangedEventArgs e)
{
if (txt2.Text != "" && txt2.Text != null)
txt1.Text = (Convert.ToDecimal(txt2.Text.ToString()) / Convert.ToDecimal(a.ToString()) / Convert.ToDecimal(b.ToString())).ToString();
else
txt1.Text = null;
}这样的话可以实现联动 但是txt2输入第一个数字以后,光标会跳到输入的数字前面去,但是txt1输入数字则不会出现此问题,求解!或者有没有更好的办法来实现联动
private void txt1_TextChanged(object sender, TextChangedEventArgs e)
{
if (txt1.Text != "" && txt1.Text != null)
txt2.Text = (Convert.ToDecimal(txt1.Text.ToString()) * Convert.ToDecimal(a.ToString()) * Convert.ToDecimal(b.ToString())).ToString();
else
txt2.Text = null;
} private void txt2_TextChanged(object sender, TextChangedEventArgs e)
{
if (txt2.Text != "" && txt2.Text != null)
txt1.Text = (Convert.ToDecimal(txt2.Text.ToString()) / Convert.ToDecimal(a.ToString()) / Convert.ToDecimal(b.ToString())).ToString();
else
txt1.Text = null;
}这样的话可以实现联动 但是txt2输入第一个数字以后,光标会跳到输入的数字前面去,但是txt1输入数字则不会出现此问题,求解!或者有没有更好的办法来实现联动
你是txt2输入文字-->经过计算给txt1赋值-->txt1_TextChanged-->经过计算给txt2赋值(此次赋值和原来的值一样所以光标跳了,值看起来没边)解决方案:定义一个变量记录正在输入的文本框是哪个。
比如: private string whichBox=string.Empt;
private void txt1_MouseEnter(object sender, EventArgs e)
{
whichBox="txt1";
} private void txt2_MouseEnter(object sender, EventArgs e)
{
whichBox="txt2";
}
private void txt1_TextChanged(object sender, TextChangedEventArgs e)
{
if(whichBox!="txt1")
return; if (txt1.Text != "" && txt1.Text != null)
txt2.Text = (Convert.ToDecimal(txt1.Text.ToString()) * Convert.ToDecimal(a.ToString()) * Convert.ToDecimal(b.ToString())).ToString();
else
txt2.Text = null;
} private void txt2_TextChanged(object sender, TextChangedEventArgs e)
{
if(whichBox!="txt2")
return;
if (txt2.Text != "" && txt2.Text != null)
txt1.Text = (Convert.ToDecimal(txt2.Text.ToString()) / Convert.ToDecimal(a.ToString()) / Convert.ToDecimal(b.ToString())).ToString();
else
txt1.Text = null;
}