从另一个 file/class 调用非静态方法

Calling non-static method from another file/class

我提前道歉,因为我想这是一个重复的问题,但我已经搜索了大约一个小时的答案,但我还没有找到解决我问题的答案。

基本上,我试图从另一个文件和 class 调用非静态方法。我的代码如下:

Form1.cs:

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {        
        public void SwapPositions()
        {
            text1.Location = new Point(73, 101);
            label1.Location = new Point(12, 111);
        }
     }
}

我正在尝试这样调用该函数,但它不起作用:

Settings.cs:

namespace WindowsFormsApp1
{
    public partial class Settings : Form
    {
// some code //
                Form1 t = new Form1();
                t.SwapPositions();
     }
}

谁能向我解释为什么这不起作用以及如何更改我的代码以使其起作用?

当您执行 Form1 t = new Form1() 时,它会创建一个新表单。要在您的表单上调用 SwapPositions 方法,请执行以下操作:

namespace WindowsFormsApp1
{
    public partial class Settings : Form
    {
        Form1 frm = null;
        public Settings(Form1 frm)
        {
            this.frm = frm;
        }
        public void MethodWhereSwapPositionsGetsInvoked()
        {
            frm.SwapPositions();
        }
     }
}

并创建 Settings 的实例:

Settings settings = new Settings(this);