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输入数字则不会出现此问题,求解!或者有没有更好的办法来实现联动

解决方案 »

  1.   

    其实这里是一个循环赋值的问题。
    你是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;
      }