【发布时间】:2021-09-24 06:28:28
【问题描述】:
我在表格布局上有一些控件,每个控件都有一个绑定值(来自 DataTable 并与 BindingSource 绑定)。我的应用程序在交互后隐藏了一些控件,如果绑定的控件不可见,我希望每个隐藏控件的值设置为 null 或 DBNull.Value。
基本上我有一个循环遍历我的表格布局中的所有控件。
foreach (System.Windows.Forms.Control c in tablelayout.Controls)
{
if (c.Visible == false && c.DataBindings.Count > 0)
{
Binding binding = c.DataBindings[0]; // only one binding per control
// here I would do something like (object)binding.Value = null;
}
}
这可能吗?我最后的解决方案是手动更改我变得不可见的每个控件的值...
【问题讨论】:
-
这些事件通常用于您所描述的内容,以处理需要特殊格式的值或解析数据源或控件不直接支持的值(例如 Null / DBNull应用于 DateTimePicker 的值)。
-
我找到了一种方法:在 foreach 中我设置了
c.Text = null,然后我调用了bindingSource.EndEdit(),这会强制重新绘制绑定。这行得通。