有任何方法禁用TextChanged方法吗?我必须在TextChanged方法中用两个计算值填充两个文本框(命名为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");
}
}有什么想法吗?
编辑:我只想禁用一个方法调用
发布于 2015-12-11 10:01:05
可以使用一个变量来确定当前是否正在设置值。如果你不是,就把它设置好。
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。
https://stackoverflow.com/questions/34220661
复制相似问题