我有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内()。 谢谢。
你的意思是,这样的吗?
public void decentMethod()
{
Class1 instance = new Class1();
instance.awesomeMethod();
}
你需要你想打电话的方法的类的实例。
或者,如果你并不需要/想用一个实例来工作,使其成为静态方法:
public partial class Class1 : ClassContainer
{
public static void awesomeMethod()
{
}
}
...
public void decentMethod()
{
Class1.awesomeMethod();
}
为了调用一个类的实例方法,你需要一个类的实例。 因此,要调用的Class1的awesomeMethod,你必须创建Class1的实例:
Class1 c = new Class1();
c.awesomeMethod();
从你的开头一段,但是,它听起来就像是两个实际的类是两种不同的形式。 在这种情况下,它并没有真正意义的一个形式,创造另一种形式的新实例纯粹是为了得到什么大概是一个辅助方法 - 创建第二种形式是潜在的一个可怕的很多开销。 你会关闭将辅助方法到一个单独的,更轻量级的类更好。
我猜测,这些都不是真正的方法签名。
是否awesomeMethod
需要任何成员的任何引用decentMethod
?
如果不是这样,这将是简单的:
new Class1().awesomeMethod();
这里是你可以在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表单代码中可以看出,即使一切是正确的。
好吧我在这个初学者,不知道同样的事情。 我相信我明白你在问什么。 我只是尝试这样做,尝试几次后点击它,并成为新的这个也许我可以用我的话说简化它。 我不知道你正在使用的程序,但我使用的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岁我假设你已经发现了这一点,你自己或许找到了一个更好的解决方案,但对于其他人询问,今后我希望同样的问题这可以帮助你。
假设主窗体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.