有没有办法禁用TextChanged方法?我必须在TextChanged方法中用2个计算值填充2个文本框(名为A,B)但是当我在A中键入一个数字时,它会计算一个值并用它填充B,但是然后B textchanged方法将执行A. ...最后我得到StackOverflowException 有代码:
private void AB_TextChanged(object sender, TextChangedEventArgs e)
{
if (sender == A)
{
B.Text = (Convert.ToDouble(A.Text)*27).ToString("0.00");
}
else if (sender == B)
{
A.Text = (Convert.ToDouble(B.Text) /13).ToString("0.00");
}
}
有什么想法吗?
编辑:我想只禁用一个方法调用
答案 0 :(得分:3)
您可以使用一个变量来确定您当前是否正在设置值。只有你不这样做,设置它。
private bool settingValue = false;
private void AB_TextChanged(object sender, TextChangedEventArgs e)
{
if(!settingValue){
settingValue = true;
if (sender == A)
{
B.Text = (Convert.ToDouble(A.Text)*27).ToString("0.00");
}
else if (sender == B)
{
A.Text = (Convert.ToDouble(B.Text) /13).ToString("0.00");
}
settingValue = false;
}
}
首次调用该方法时,settingValue
为false
。然后立即将值设置为true
设置Text
时,将再次执行事件处理程序。但这次它什么都不做,因为settingValue
是true
然后第一次执行结束,将settingValue
设置回false
。