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; }
分类:
C#-WPF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人