首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用TextChanged函数wpf

禁用TextChanged函数wpf
EN

Stack Overflow用户
提问于 2015-12-11 09:58:46
回答 1查看 83关注 0票数 0

有任何方法禁用TextChanged方法吗?我必须在TextChanged方法中用两个计算值填充两个文本框(命名为A,B),但是当我在A中键入一个数字时,它计算一个值并用它填充B,但是B textchanged方法将执行然后A.最后,我得到了StackOverflowException,这是代码:

代码语言:javascript
复制
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");
        }
    }

有什么想法吗?

编辑:我只想禁用一个方法调用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-11 10:01:05

可以使用一个变量来确定当前是否正在设置值。如果你不是,就把它设置好。

代码语言:javascript
复制
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;
    }
}

第一次调用该方法时,settingValuefalse。然后,它立即将值设置为true。

设置Text时,将再次执行事件处理程序。但这一次,它什么也不做,因为settingValuetrue

然后,第一个执行结束,将settingValue设置为false

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34220661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档