解绑绑定源

Glu*_*uip 6 c# bindingsource winforms

我在我的Windows窗体应用程序中使用bindingsource来填充我视图中的一些文本框等.绑定工作正常但是如何从我的对象中取消订阅我的bindingSource?

bindingSource.DataSource = new Foo();//OK
bindingSource.DataSource = null;//Not ok
Run Code Online (Sandbox Code Playgroud)

如果我尝试解除绑定设置data = null我得到一个例外:

System.ArgumentException:无法绑定到DataSource上的属性或列Bar.参数名称:dataMember

我不想删除所有绑定到我的控件(我有很多),但只要bindingSource没有数据就想挂起绑定....

我找到了这样的解决方法,bindingSource.DataSource = typeof(Foo);但是这样吗?

Luc*_*rin 5

类型"变通方法"实际上是Windows表单设计器在PropertyGrid中设置BindingSource的DataSource时所执行的操作,并从"项目数据源"中选择一种类型.

查看表单的*.designer.cs文件中生成的代码.

我们在其中一个产品中使用这个"技巧",并且它已经运行了很多年了.

问候


JYe*_*ton 0

我不知道.DataBindingSource 对象的属性,但有一个.DataSource属性可以设置为 null:

bindingSource.DataSource = null;
Run Code Online (Sandbox Code Playgroud)

这将释放数据的绑定源。但是,查看BindingSource.DataSource 的参考

DataSource property             List results
----------------------------    -------------------------------------------
null with DataMember set        Not supported, raises ArgumentException.
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 DataMember,则无法将 DataSource 设置为 null,不会出现异常。

不幸的是,我不知道您的解决方法是否是正确的方法,但至少现在我们知道在设置 DataMember 时不能简单地绑定到 null。