在其他的.cs文件类使用从一个cs文件类的方法(Using a method from one .c

2019-07-30 17:55发布

我有2名的.cs在它的一类文件的每个。 如何在另一个类中调用一个类的方法从Form1.cs中Form2.cs里面?

看起来是这样的...

Form1.cs

public partial class Class1 : ClassContainer
{
    public void awesomeMethod()
        {
        }
}

Form2.cs

class Class2 : SomethingChanged
{
    public void decentMethod()
    {
    }
}

我想打电话给awesomeMethod()的decentMethod内()。 谢谢。

Answer 1:

你的意思是,这样的吗?

public void decentMethod()
{
    Class1 instance = new Class1();
    instance.awesomeMethod();
}

你需要你想打电话的方法的类的实例。


或者,如果你并不需要/想用一个实例来工作,使其成为静态方法:

public partial class Class1 : ClassContainer
{
    public static void awesomeMethod()
    {
    }
}

...

public void decentMethod()
{
    Class1.awesomeMethod();
}


Answer 2:

为了调用一个类的实例方法,你需要一个类的实例。 因此,要调用的Class1的awesomeMethod,你必须创建Class1的实例:

Class1 c = new Class1();
c.awesomeMethod();

从你的开头一段,但是,它听起来就像是两个实际的类是两种不同的形式。 在这种情况下,它并没有真正意义的一个形式,创造另一种形式的新实例纯粹是为了得到什么大概是一个辅助方法 - 创建第二种形式是潜在的一个可怕的很多开销。 你会关闭将辅助方法到一个单独的,更轻量级的类更好。



Answer 3:

我猜测,这些都不是真正的方法签名。

是否awesomeMethod需要任何成员的任何引用decentMethod

如果不是这样,这将是简单的:

new Class1().awesomeMethod();


Answer 4:

这里是你可以在Visual Studio中尝试。 写下您的方法的使用 没有定义。 例如,在某个地方你的代码,请键入:

cls_a instance_a;

然后你会得到下一个cls_a波浪线。 右击“cls_a”,然后从弹出菜单中生成。 然后看看会发生什么。

我看到App_Code目录创建,并在该目录中的文件cls_a.cs生成类cls_a。 Visual Studio中生成的定义。 并将其编译。

然后,您可以键入使用的方法从没有像这样cls_a的定义:

instance_a.meth_x();

同样,在弯弯曲曲的线右键单击并选择生成。 让Visual Studio中为您生成的定义。

我认为ASP .NET要求你把你的其他类在App_Code子目录。 如果你需要弯曲ASP.NET自己的方式来,我觉得Web.config文件可以被编辑,所以你可以把你的代码文件,无论你想。 我还没有学会如何做到这一点,所以我留给你或别人。

无论如何,没有你的类和App_Code文件子目录方法可能会导致你的类和函数不要在Web表单代码中可以看出,即使一切是正确的。



Answer 5:

好吧我在这个初学者,不知道同样的事情。 我相信我明白你在问什么。 我只是尝试这样做,尝试几次后点击它,并成为新的这个也许我可以用我的话说简化它。 我不知道你正在使用的程序,但我使用的Visual Studio 2016年我创建了两个表格(Form 1和Form),每个都包含一个按钮。 Form1的按钮和窗体2按钮。 当我点击Form1的按钮,它从窗口2调用一个方法,当我点击窗体2按钮,它调用从Form1中的方法。 我注意到,在解决方案资源管理这表明这两种形式,以及一切他们牵制。 我已经做了很多的研究,纠正我,如果我错了,但我相信的顺序是这样的,从父容器到子空间(namespace>类>方法)。 相信这是真的我想,我需要调用类之前,我可以调用该方法。

这是我的脚本。

Form1中:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2();
        frm2.Show();
    }

    private void f1button_Click(object sender, EventArgs e)
    {
        f2Words f2w = new f2Words();
        f2w.Words2();

    }
}
public class f1Words
{
    public void Words1()
    {
        MessageBox.Show("Form 1 Method Calling Worked!");
    }
}

窗体2:

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {

    }

    private void f2button_Click(object sender, EventArgs e)
    {
        f1Words f1w = new f1Words();
        f1w.Words1();

    }
}
public class f2Words
{
    public void Words2()
    {
        MessageBox.Show("Form 2 Method Calling Worked!");
    }
}

在解决方案资源管理器窗口,它显示了这两个Form 1和Form的类。 所以我决定尝试调用这些类的新实例。

“f1Words f1w =新f1words()” 和 “f2Words f2w =新f2Words()”。

然后,在这之后我的权利称为类的这些新情况下,与他们中的方法发挥。

“f1w.Words1()” 和 “f2w.Words2()”

最终的结果是成功的。 当我点击Form1的Button1的叫窗体2的F2Words类,拉着Words2方法出它打开一个消息框,说“窗体2方法中调用的工作!”,并为窗体2 Button2的反之亦然。

由于这个职位是4岁我假设你已经发现了这一点,你自己或许找到了一个更好的解决方案,但对于其他人询问,今后我希望同样的问题这可以帮助你。



Answer 6:

假设主窗体frmMain。 让frmMain()的构造函数外的静态声明; 为其分配一个相同的构造函数中:

public static frmMain p_frmMain = null;
public frmMain()
{
    InitializeComponent();
    :
    p_frmMain = this;
}

从另一个类(使用主要的命名空间在同一个解决方案),打电话,说,主要的“btnHelloWorld_Click()方法:

AnotherClass_EventHandler(object sender, EventArgs e)
{
:  // Call frmmain()'s 'btnHelloWorld_Click' event:
   frmMain.p_frmMain.btnHelloWorld_Click (sender, e);
:
}
// Quick, dirty and done.


文章来源: Using a method from one .cs file class in another .cs files class
标签: c# class