You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET中如何将隐藏绑定控件对应的BindingSource值设为null或DBNull

解决方案

你提出的需求完全可以直接通过操作Binding对象实现,无需手动维护每个控件与数据源字段的映射关系,比你提到的备选方案扩展性和可维护性更好。

核心实现思路

你当前的场景是通过BindingSource绑定DataTable,可以直接通过Binding对象获取绑定的数据源实例、当前数据行、绑定字段名,直接给对应字段赋值即可,不需要操作控件属性,也规避了不同控件属性的类型兼容问题。

完整修改后代码

foreach (System.Windows.Forms.Control c in tablelayout.Controls)
{
    if (!c.Visible && c.DataBindings.Count > 0)
    {
        Binding binding = c.DataBindings[0];
        // 适配BindingSource绑定DataTable的场景
        if (binding.DataSource is BindingSource bs && bs.Current is DataRowView drv)
        {
            string bindField = binding.BindingMemberInfo.BindingField;
            drv[bindField] = DBNull.Value;
        }
        // 其他数据源类型可在此处拓展分支逻辑
    }
}

补充说明

  • 如果需要兼容其他数据源场景,可以使用通用实现:先给控件的绑定属性设置对应空值,再调用binding.WriteValue()手动触发值回写到数据源,注意处理bool等值类型属性的空值兼容即可。
  • 如果你的绑定配置了DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged,设置控件属性后会自动回写数据源,不需要手动调用WriteValue,手动调用的兼容性更强,不受原有绑定更新模式的影响。

内容的提问来源于stack exchange,提问作者Me3nTaL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:09:04