当前位置: 首页 > news >正文

C# 动态管理控件和事件,批量查询管理同类控件

代码功能总结

这段代码是一个 C# Windows Forms 应用中的事件处理函数,用于响应数值选择器(NumericUpDown)控件的值变化。其核心功能是根据用户选择的数据长度,动态管理 64 个文本框的启用状态和事件处理器。

关键功能点

  1. 数据长度计算

    • 根据 DLC(数据长度代码)和 CAN FD 模式选项计算实际数据长度
    • 使用辅助方法GetLengthFromDLC处理不同模式下的长度转换
  2. 控件动态管理

    • 通过控件名称动态查找 64 个文本框控件(txtData0 到 txtData63)
    • 使用递归查找确保能找到嵌套在容器中的控件
  3. 启用状态控制

    • 仅启用索引小于实际数据长度的文本框
    • 实现了根据数据长度动态显示 / 隐藏输入字段的功能
  4. 事件处理器管理

    • 使用 "移除 - 添加" 模式避免事件重复注册
    • 所有文本框共享相同的输入验证逻辑(KeyPress 事件)
    • 所有文本框共享相同的焦点离开处理逻辑(Leave 事件)

代码设计亮点

  • 动态控件查找:避免了为 64 个文本框编写重复代码
  • 事件安全注册:通过先移除再添加的方式防止事件重复绑定
  • 健壮性处理:包含了控件存在性检查和类型转换验证

// 数据长度变化事件处理函数
private void nudLength_ValueChanged(object sender, EventArgs e)
{int iLength = GetLengthFromDLC((int)nudLength.Value, !chbFD.Checked); // 获取数据长度,考虑是否为FD模式for (int i = 0; i < 64; i++)                       // 循环遍历 64 个文本框控件{string controlName = "txtData" + i.ToString(); // 控件名称格式为 txtData0, txtData1, ..., txtData63//通过控件名称查找对应的文本框控件,使用递归查找模式 (true) 确保能找到嵌套在容器控件中的文本框Control[] foundControls = this.Controls.Find(controlName, true); if (foundControls.Length == 0) continue;       // 如果没有找到对应的控件则跳过当前循环TextBoxControl txtBox = foundControls[0] as TextBoxControl;  // 确保找到的控件是 TextBox 类型if (txtBox == null) continue;                  // 如果不是 TextBox 类型则跳过// 设置启用状态txtBox.Enabled = i < iLength;                  // 仅当 i 小于 iLength 时启用文本框// 添加 KeyPress 事件(自动去重)              txtBox.KeyPress -= txtID_KeyPress;             // 先移除确保不重复txtBox.KeyPress += txtID_KeyPress;             // 添加 KeyPress 事件处理器// 添加 Leave 事件(自动去重)                 txtBox.Leave -= txtData0_Leave;                // 先移除确保不重复txtBox.Leave += txtData0_Leave;                // 添加 Leave 事件处理器}
}

相关文章:

  • 通信网络编程2.0——JAVA
  • ES集群的故障转移
  • 工厂模式demo
  • qemu-guest-agent详解
  • Python训练营-Day29-复习日
  • 应对人口老龄化:智慧养老驱动高质量发展新范式
  • 遍历对象属性,for...in和Object.keys到底用哪个?
  • 网络安全之RCE简单分析
  • C#事件基础模型代码
  • Java面试避坑指南:牛客网最新高频考点+答案详解
  • Verilog基础:$timeformat系统任务的使用
  • 火山引擎扣子的具体作用
  • docker 02网络
  • Java从入门到精通 - 面向对象高级(一)
  • HALCON第五讲-> 形状匹配
  • java枚举 注解 异常 常用类
  • Kubernetes安全机制深度解析(一):从身份认证到资源鉴权
  • js将object转换成string
  • Windows桌面图标修复
  • FastDFS 分布式存储系统深度解析与实践指南
  • 能用织梦做动态网站么/2023广州疫情最新消息今天
  • 网站做多久才有流量/如何给自己的公司建网站
  • 精简网站模板/上海优化公司排行榜
  • 个人网页html实例完整代码/上海官网seo
  • 自适应网站建设哪家便宜/站优化
  • 网站开发过程总结/推56论坛