MSDN上说在不同的窗体间共享数据可以在它们之间通过构造函数传个BindingSource!但如果在一个窗体上我已经在窗体设计器中施了个BindingSource组件,并和上面的各控件完成了绑定,那有什么办法可以尽可能省事的将所有的控件绑定到从另一个窗体传过来的BindingSource类型的参数上呢?

解决方案 »

  1.   

    就是说我有一个窗体,其构造函数为
    public Form1(BindingSource BS)
    {
       InitializeComponents();
       //我要这个地方的代码
    }在这个窗体的设器中我施入了一个BindingSource组件,名为bindingSource1,窗体上的所有控件都和该组件绑定完成了,现在该窗体在编辑模式下要求接受通过上面参数传递过来的BS,而不是原来在设计时的bindingSource1组 件,有没有什么办法让窗体上的控件都绑定到BS上,不会是用
    控件.DataBindings.Add(...);
    这种代码的方法来写吧?那不是很麻烦,如果控件很多呢?
      

  2.   

    http://topic.csdn.net/u/20101026/16/3fff761f-cc1f-420a-9b0a-18583561761b.html
      

  3.   

    我现在重新说一下:
    1。我有一个窗体form1,上面有三个TextBox(假如就是三个吧)和一个DataGridView,分别是textBox1,textBox2,textBox3和dataGridView1。
    2。现在我从工具箱施个BindingSource组件:名为bindingSource1,并且将所有控件绑定到bindingSource1上面。
      到现在为止大家应该还明白吧?
    3.然后在窗体的Load事件中读取数据库,程序就可以运行了!OK?现在要求在读取数据库的时候如果是添加模式就用上面的就可以了,如果是编辑模式会有一个BindingSource类型的参数bs传给构造函数,这时就不要读取数据库了,只要修改bs参数里的数据就可以了。我就是要问:
    在设计器中将所有的控件都绑定到了bindingSource1上了,现在怎么才能将这些控件在需要的时候(即编辑模式)将它们都绑定到bs上,就果用代码写的话太费事,实际上窗体上面的控件有很多,还有像DataGridView,需要设置列类型及格式等内容。
    其实我用了一个笨的方法:就是将BindingSource组件的GenerateMember设置为false,这样可以在窗体设计器中将一切工作做好,将后将对应于该组件的位于InitializeComponents()方法里的内容复制出来,这样可以不影响设计器里的绑定效果!我现在想看看有没有更好的办法!