从另一个文件/类调用非静态方法

时间:2018-12-22 14:17:57

标签: c# non-static

我事先道歉,因为我想这是一个重复的问题,但是我一直在寻找答案约一个小时,而我还没有找到可以解决我问题的答案。

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

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();
     }
}

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

1 个答案:

答案 0 :(得分:0)

当您执行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);