Wpf TextChanged事件导致死循环,事件触发循环问题

1、实例:

说明:当TextBox控件的Text内容发生变化时,TextChanged事件触发,并且会立即同步执行。

基于这个特点,设置一个全局变量标识,ChangeTxtB,如果是正在修改txtB的时候,不执行txt_TextChanged事件内容。

这样就可以解决TextChanged事件带来的死循环问题。

//比特
private void txtb_TextChanged(object sender, TextChangedEventArgs e)
{
    if (ChangeTxtB) //如果当前是正在修改txtB,后面的代码不执行
        return;
    try
    {
        if (string.IsNullOrEmpty(txtb.Text))
        {
            txtb.Focus();
            return;
        }

        double number = double.Parse(txtb.Text);
        txtB.Text = (number / 8.0).ToString();
    }
    catch (Exception ex)
    {
        ShowError(ex.Message);
    }
}
//标识txtB对话框正在修改数据
private bool ChangeTxtB = false;
//字节
private void txtB_TextChanged_1(object sender, TextChangedEventArgs e)
{
label1.Content = "";
try
{
if (string.IsNullOrEmpty(txtB.Text))
{
    txtB.Focus();
    return;
}
//标识正在修改txtB
ChangeTxtB = true;
//吉字节变换是统一修改其他内容
double number = double.Parse(txtB.Text);
txtb.Text = (number * 8).ToString();//当修改Text属性时,txtb_TextChanged会立即同步触发
txtKB.Text = (number / 1024.0).ToString();
txtMB.Text = (number / 1024.0 / 1024.0).ToString();
txtGB.Text = (number / 1024.0 / 1024.0 / 1024.0).ToString();
txtTB.Text = (number / 1024.0 / 1024.0 / 1024.0 / 1024.0).ToString();
}
catch (Exception ex)
{
ShowError(ex.Message);
}
//标识结束修改txtB
ChangeTxtB = false;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值