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