C#来自另一个类的Call方法

时间:2015-10-12 19:08:59

标签: c# class methods public

我已经尝试了正在运行的波纹管代码,但每次调用calltest()方法时它都会保持打开多个表单。如何调用test()方法而不打开它的形式?我应该将所有方法移动到另一个类文件吗?感谢

namespace test1
{
    public partial class MainForm : Form
    {
         public void test()
         {
              //code
         }
    ...
    }
}

namespace test1
{
    public partial class SecondForm : Form
    {
         private void calltest()
         {
            MainForm form1 = new MainForm();
            form1.test();
         }
    ...
    }
}

1 个答案:

答案 0 :(得分:0)

您可能想重新考虑您的设计。但是,这里是您问题的直接答案:

您遇到的问题是因为每次使用calltest方法时,您都在创建MainForm的新实例。

相反,您应该注入MainForm的原始实例并将其存储在SecondForm内的实例变量中,如下所示:

public partial class SecondForm : Form
{
     MainForm form1 = null;

     public SecondForm(MainForm main_form)
     {
         form1 = main_form;
     }

     private void calltest()
     {
        form1.test();
     }
...
}

现在,当您创建SecondForm的实例时,请确保使用以下内容注入MainForm的原始实例:

SecondForm second_form = new SecondForm(main_form); //If you are creating this from MainForm, then simply pass `this` as the construction parameter