C# Winform BindingSource未初始化

C# Winform BindingSource未初始化,c#,winforms,bindingsource,C#,Winforms,Bindingsource,我有一些表单,其中控件绑定到BindingSource。当用户单击“保存”按钮时,我正在将数据保存到数据库中。控件已绑定,因此我不必手动检测更改 除用户关闭表单然后重新打开表单外,所有操作均按预期进行。看起来BindingSource在第二次/后续时间未初始化。因为下面的调用在重新打开时返回null(在设置数据源之后) 有趣的是数据被显示出来了。因此,它成功地设置了数据源 但是,如果在form closed事件中处置BindingSource并将其设置为null,那么当第二次显示表单时,它会在上

我有一些表单,其中控件绑定到BindingSource。当用户单击“保存”按钮时,我正在将数据保存到数据库中。控件已绑定,因此我不必手动检测更改

除用户关闭表单然后重新打开表单外,所有操作均按预期进行。看起来BindingSource在第二次/后续时间未初始化。因为下面的调用在重新打开时返回null(在设置数据源之后)

有趣的是数据被显示出来了。因此,它成功地设置了数据源

但是,如果在form closed事件中处置BindingSource并将其设置为null,那么当第二次显示表单时,它会在上面的同一代码上抛出NullExceptionReference。这一次构造函数中的代码celow不起作用:

supplierBindingSource.DataSource=qry


表单在Mdi容器上打开。我尝试以单独的形式打开,也尝试以对话框的形式打开。但似乎什么都没用。

你说的“重新开放”是什么意思?当表单关闭时,应该释放表单实例,下次创建并“打开”新表单实例时。@IvanStoev。但是绑定源的行为方式就好像新表单实例以某种方式获取旧的BindingSource实例一样!!我确信这里正在发生其他事情。正如我第一次说的,一切都很好。你是唯一一个能弄明白的人。在表单类中(和/或表单设计器生成的代码)必须是类似于
supplierBindingSource=newbindingsource(…
)的代码。请在该行上放置一个断点,并确保它在“重新打开”表单时执行。我高度怀疑它不会执行
Supplier currentSupplier = (Supplier)supplierBindingSource.Current;