C#中不同窗体之间的数据传递

学习C#不久,对于C#不同窗体之间的数据传递,总是处理得不好,今天,通过上网查找资料,小有心得。

C#之间不同窗体之间的数据传递,无非有两种方式:

  • 数据库或文件。这是最直接的方式,需要传递的数据存储在数据库、配置文件、或者xml文件中,任何能够访问此数据库或文件的窗体均能对数据进行访问,解决了数据之间的传递问题。
  • 参数传递。参数传递有几种情况,分别为:(假设父窗口为frmMain, 子窗口分别为frmSub1, frmSub2)
    • 方式1:父窗口向子窗口传递参数。这种情况非常常见,也最简单,假设父窗口frmMain要向子窗口frmSub1传递数据dataFromMain并在frmSub1中进行处理,则只需在子窗口中定义一个函数如:public typeReturn DoHandler(dataFromMain)即可,其调用模式为:                           
        • frmSub1 frmsub = new frmSub1(); frmsub.DoHandler(dataFromMain);
    • 方式2:子窗口向父窗口传递参数。这种情况稍微复杂,子窗口要向父窗口传递数据,那么必须在子窗口中保留父窗口的指针,即将父窗口作为子窗口的一个数据成员。若子窗口frmSub1要向frmMain中传递数据,则frmSub1的类定义为:
    • public frmMain;
      public class frmSub1
      {
          frmSub1's attribute;
          frmMain mfrmMain;
      
          public frmSub1(frmMain frmmain)
          {
               initiate_attribute();
               mfrmMain = frmmain;
          }
      }

      在构造子窗口的时候,其形式为:frmSub1 frmsub1 = new frmSub1(this),这里的this即是主窗口。
    • 方式3:子窗口之间传递参数。若父窗口是容器,则只需将子窗口间的传递数据的控件声明为public即可;若不是,则可以参考方式2,通过在主窗口中定义变量来传递子窗口之间的数据。


      版权声明:本文为iosJohnson原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。