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;
    }
  • 相关阅读:
    2117 poj 割点练习
    hdu 2767强连通分量练习
    hdu 1301 kruskal 最小生成树
    hdu 1523 求割点和块
    hdu 1207Arbitrage 最短路劲
    hdu 1874 畅通工程续
    求最小点基 poj 1236
    Hdu 1301 prim算法 生成最小生成树
    我眼中的性能测试工程师
    Web系统的测试
  • 原文地址:https://www.cnblogs.com/tianma3798/p/5770558.html
Copyright © 2011-2022 走看看