none
如何在一个窗体里调用另一个窗体的datagridview控件

    问题

  • 网上解答:

    窗体A有个DataGridView,窗体B调用A,那么:
    把窗体A的DataGridView设置为public的
    把窗体B的构造写为 public B(A a){ ...}       //这一步不知道如果进行,请给代码演示
    在A中newB的时候写new B(this).Show();
    这时 B中的a就可以访问到DataGridView了

    谢谢了?

    2016年7月14日 9:46

答案

  • 在A窗体中 // A窗体中有dataGridView控件

    B  b = new B(this);                //创建B窗体
     b.Show();
    在B窗体中
           A  a = new A();
            public B(A  a)
            {
                InitializeComponent();//必须写  而且要卸载赋值的前面
                this.a = a;
            }

    • 已标记为答案 LiXin111 2016年7月15日 2:19
    2016年7月15日 2:19

全部回复

  • 为什么要这样操作?类的封装原则,变量(DataGridView)本身应该是私有的,可以公布一些接口操作这些私有变量

    A窗体的DataGridView, 我认为是private为好,需要给它加几个public接口供B窗体或其它窗本调用

    比如设置数据源,新增一行,删除一行。

    也可以不考虑这些,直接将DataGridView设为public, 其它窗体就可以像操作变量一些操作它,不过多窗体操作时,数据同布刷新仍旧需要注意,我认为以公布接口的方法为佳。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年7月14日 9:58
  • 主要是为了页面DataGridView数据的刷新
    2016年7月14日 10:30
  • 在A窗体中 // A窗体中有dataGridView控件

    B  b = new B(this);                //创建B窗体
     b.Show();
    在B窗体中
           A  a = new A();
            public B(A  a)
            {
                InitializeComponent();//必须写  而且要卸载赋值的前面
                this.a = a;
            }

    • 已标记为答案 LiXin111 2016年7月15日 2:19
    2016年7月15日 2:19
  • 这种方式简单灵活

    总结一下,有这几种

    http://www.cnblogs.com/_cloudy/archive/2008/12/26/1363328.html

    以我的理解,这样做的偶合性强,代码不容易维护。A,B窗体几乎是捆绑在一起,加入一个C窗体来操作控件DataGridView,代码可能还要维护一次。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年7月15日 3:00