在WinForm里,我拖了两个TextBox1和TextBox2,并分别设了TextChanged事件:当TextBox1的Text键盘输入值时,TextBox2的Text值相应改变;当TextBox2的Text键盘输入值时,TextBox1的Text值相应改变。但是这样两个TextChanged事件就会相互触发,怎样避免?或有什么其他解决方案。谢谢!

解决方案 »

  1.   

    foucs时注销令一个控件事件,
    leave时增加
      

  2.   

    你试验过了吗?我这边测试的没有问题Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            TextBox2.Text = TextBox1.Text
        End Sub    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
            TextBox1.Text = TextBox2.Text
        End SubTextBox1.Text = TextBox2.Text并没有触发 TextBox1_TextChanged
      

  3.   

    我对KeyDown事件不太清楚。我要的效果是TextBox的输入的同时,另一个同时改变,而不是输入完回车或失去焦点后才改变。TextChanged可以做到。
      

  4.   

    或者使用其他事件
    Leave或者KeyUp或者KeyPress
      

  5.   

     
    findcaiyzh(秋心),你两个TextBox的值完全一样当然不再触发了。
      

  6.   


    private void FmQcParamSet_Load(object sender, EventArgs e)
    {
        this.txtLowValue.Text = "0";
        this.txtHighValue.Text = "0";
        this.txtSdValue.Text = "0";
        this.txtCvValue.Text = "0";
    }
     /// <summary>
            /// 文本框txtQcValue事件处理,输入数据联动其它两个文本框
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void txtQcValue_TextChanged(object sender, EventArgs e)
            {
                if (this.txtQcValue.Text != "" && this.txtSdValue.Text != "") 
                {
                    int qcValue = Convert.ToInt32(this.txtQcValue.Text);
                    int qcSd = Convert.ToInt32(this.txtSdValue.Text);
                    int highValue = qcValue + 2 * qcSd;
                    int lowValue = qcValue - 2 * qcSd;                this.txtLowValue.Text = lowValue.ToString();
                    this.txtHighValue.Text = highValue.ToString();
                }            
            }
            /// <summary>
            /// 文本框txtQcSdValue事件处理,输入数据联动其它两个文本框
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void txtSdValue_TextChanged(object sender, EventArgs e)
            {
                if (this.txtQcValue.Text != "" && this.txtSdValue.Text != "") 
                {
                    int qcValue = Convert.ToInt32(this.txtQcValue.Text);
                    int qcSd = Convert.ToInt32(this.txtSdValue.Text);
                    int highValue = qcValue + 2 * qcSd;
                    int lowValue = qcValue - 2 * qcSd;                this.txtLowValue.Text = lowValue.ToString();
                    this.txtHighValue.Text = highValue.ToString();
                }
            }
    试试这段,输入this.txtQcValue.Text或this.txtSdValue.Text引起余下两个文本框联动