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