gpt4 book ai didi

winforms - 如何将 BindingSource 当前记录设置为 null?

转载 作者:行者123 更新时间:2023-12-02 08:00:55 26 4
gpt4 key购买 nike

我有一个工作订单的捕获表单,它有一个 CustomerBindingSource 和一个 WorksOrderBindingSource 控件。大多数编辑字段都绑定(bind)到 WorksOrderBindingSource,其中 ComboBox 的列表绑定(bind)到 CustomerBindingSource,其 SelectedValue 绑定(bind)到 WorksOrderBindingSource 中的 >CustomerId 字段。这都是非常例行公事和标准的,这里没有什么可笑的。

然后,我还有一些文本框字段,用于显示当前编辑的工单的当前所选客户的属性。我也将这些字段绑定(bind)到 CustomerBindingSource 。选择客户后,这些字段将按预期显示该客户的属性。

我的问题是当我想使用表单来捕获新的工作订单时。我使用 CustomerId == null 实例化一个新的 WorksOrder 对象,并将其绑定(bind)到 WorksOrderBindingSource。我在 CustomerBindingSource 中没有带有 Id == null 的对象,因此,正如预期的那样,下拉组合框为空,但是 CustomerBindingSource.Current code> 属性指向该数据源中的第一个 Customer 对象。客户链接的显示字段显示该客户的值,但尚未选择任何客户。

对我来说,唯一的解决方法似乎很笨拙。在其中,我有两个客户类型的绑定(bind)源,一个用于选定的客户并填充客户显示字段,另一个仅用于填充客户下拉列表。然后,我必须处理选择事件,并且仅当选择了客户时,才在显示字段的绑定(bind)源中找到该客户,如果没有选择,则将显示字段的数据源设置为空。这感觉非常笨拙。还有其他方法可以实现我想要的吗?

最佳答案

我发现这个主题正是我的问题,但没有令人满意的答案。我知道这是一个老话题,但是啊..

我最终得到了一个可行的解决方案:我向我的绑定(bind)源添加了一个 [PositionChanged] 事件(将是您的 CustomerBindingSource)。

        private void CustomerBindingSource_PositionChanged(object sender, EventArgs e)
{
if(<yourCombobox>.SelectedIndex==-1)
{
CustomerBindingSource.SuspendBinding();
}
else
{
CustomerBindingSource.ResumeBinding();
}
}

关于winforms - 如何将 BindingSource 当前记录设置为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12615369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com