从另一个类调用方法

本文关键字:方法 调用 另一个 | 更新日期: 2023-09-27 18:17:15

我已经尝试了下面的代码正在工作,但每次我调用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();
         }
    ...
    }
}

从另一个类调用方法

您可能需要重新考虑您的设计。然而,下面是对你问题的直接回答:

您遇到的问题是因为每次在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