zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    node 命令
    nodejs项目搭建
    linux 安装与配置
    GestureDetector
    activity切换效果
    hadoop
    phonegap 自定义插件
    自定义控件-属性自定义
    zxing demo
    select 语句的执行顺序
  • 原文地址:https://www.cnblogs.com/tianma3798/p/5770558.html
Copyright © 2011-2022 走看看