如何防止相关事件的发生?

时间:2011-04-10 14:33:34

标签: c# winforms

我有两个文本框,我想在另一个文本框改变时计算每个文本框。但是我的程序陷入循环。

    private bool suspendEvents = false; 

    private void txtYourPercent_ValueChanged(object sender, EventArgs e)
    {
        if (suspendEvents)
            return;

        suspendEvents = true;
        txtMyPercent.value = 100 - txtYourPercent.value;
        suspendEvents = false;
    }

    private void txtMyPercent_ValueChanged(object sender, EventArgs e)
    {
        if (suspendEvents)
            return;

        suspendEvents = true;
        txtYourPercent.value = 100 - txtMyPercent.value;
        suspendEvents = false;
    }

这是我的方式。这种方法很恶心。有什么更好的解决方案吗? ( “的WinForms”)

如果没有其他解决方案,请告诉我删除此问题并使用我的(哔)解决方案。

1 个答案:

答案 0 :(得分:2)

您可以为两个文本框分配相同的更改事件处理程序:

this.txtMyPercent.TextChanged += new System.EventHandler(this.txtPercent_TextChanged);
this.txtYourPercent.TextChanged += new System.EventHandler(this.txtPercent_TextChanged);

然后:

private void txtPercent_TextChanged(object sender, EventArgs e)
{
    if (sender == txtMyPercent)
    {
        txtYourPercent.Text = (100 - int.Parse(txtMyPercent.Text)).ToString();
    }
    else if (sender == txtYourPercent)
    {
        txtMyPercent.Text = (100 - int.Parse(txtYourPercent.Text)).ToString();
    }
}