form1是主窗体,原来为隐藏,现在我在form2中向form1中传递参数,想在form1中对参数进行处理,可是由于form1一直都是隐藏,在form1_load()中捕捉不到,于是我在form2中关闭了主窗体close(),而不是原来的hide(),想这样from1一定重新load,在form1_load中就能操作了。结果关闭后发现程序好象整个都退出了,我该怎么办呢?

解决方案 »

  1.   

    在Form1中编写一个公用的方法,在Form2中调用这个方法。
      

  2.   

    现在我在form2中向form1中传递参数,想在form1中对参数进行处理------这是还要保持form1为Hide吗?还是要Show出来?
      

  3.   

    form1是主窗体,原来为隐藏,现在我在form2中向form1中传递参数,想在form1中对参数进行处理,可是由于form1一直都是隐藏,在form1_load()中捕捉不到,于是我在form2中关闭了主窗体close(),而不是原来的hide(),想这样from1一定重新load,在form1_load中就能操作了。结果关闭后发现程序好象整个都退出了,我该怎么办呢?说起来有点乱。
    1:你说的原来为隐藏是什么意思?隐藏只有一种可能就是你自己hide或者设置为隐藏了。但这都不影响form_load的执行。Form_load在窗口启动时一定会执行一次。换句话说,如果你的窗口隐藏了,那么form_load已经执行过了。
    2:如果你在form2中关闭主窗体,退出是因为在
    Application.Run(new Form2());
    应用程序设定为当form2关闭时退出,你可以选择另外的。3:我觉得你的程序的问题在于你对程序的流程、程序之间的可见性没有把握好。建议是这样的:
    1:先加载Form2。
    2:把Form1对象设置为Form2的成员。例如:f1;
    3:你可以在加载Form2时就加载(初始化Form1),也可以在需要时才加载。
    4:当你需要在Form2中操作Form1时当然可以随时进行。
    5:当你需要显示Form1时只需要f1.Show();关闭也只需要f1.Hide()即可,不影响程序的执行。
    6:注意按这套方案form2是主窗口,你的应用程序中仍然要写成:Application.Run(new Form2());