码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2016-08-14 17:40:10      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

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;
}

 

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

标签:

原文地址:http://www.cnblogs.com/tianma3798/p/5770558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!