我已经研究了一个多星期了,我很难过。
我正在使用Windows中的多个表单。每个表单都驻留在自己的命名空间中。在下面的代码中,我将实例化一个新形式的Robo_Pass类。它驻留在Namespace Space_Pass中。我正在使用的表单是类监督,并且位于名称空间Robo_Pi中。
请注意,使用多个名称空间不是问题。那很多工作得很好。
在这个程序中我和:
使用Space_Pass; (我这样做,所以我可以访问Robo_Pass而无需指定它所在的命名空间。
这是我的代码:
public void Btn_Robo_Pass_Click(object sender, EventArgs e)
{
// Check to see if this Namespace/Form is open.
bool test = check_App_Open("Robo_Pass");
if (test == false) // if not, then create it.
{
Robo_Pass pass = new Robo_Pass();
// set up event handler for when this form closes
pass.FormClosed += Btn_Apps_Click;
pass.TopMost=true;
pass.Show();
btn_Apps_.PerformClick();
}
else // If already open, then just call Window_Show().
{
Window_Show("Robo_Pass");
btn_Apps_.PerformClick();
}
}
唯一的问题是:
Robo_Pass pass = new Robo_Pass();
有什么我可以添加到这一行,使这个名为“pass”的对象全局到程序的其余部分。
换句话说,从这个类中的其他方法,我希望能够在其他形式上调用方法,如下所示:
pass.method(variable);
如果我在方法之外创建对象“pass”,我实际上可以这样做。换句话说,如果我将以下代码移到任何方法之外,它可以工作:
Robo_Pass pass = new Robo_Pass();
然后我可以使用它来访问其中的方法
pass.method(variable);
但我需要在最初显示的按钮单击方法中创建此对象。
所以我的问题是这个。
有没有办法可以在该按钮方法中创建此对象,并使该对象在其他方法中可用。
我尝试添加static,public,global等关键字。但我的IDE在这种情况下拒绝所有这些。
所以我不知道如何使这个名为“pass”的对象可用于此类中的其他方法。
正如我所说,如果我在方法之外实例化它,它就像一个魅力。但不能那样做。我需要能够使用按钮实例化它。
注意:我为这篇文章中的任何错误格式或拼写错误道歉。我不经常在这里发帖,但我真的很难过这个。希望这是一个简单的解决方案。我只是不知道该怎么做。
将变量声明移到方法之外并将其公开,然后在方法中实例化它:
public Robo_Pass pass = null;
public void Btn_Robo_Pass_Click(object sender, EventArgs e)
{
...
pass = new Robo_Pass();
...
}
您现在可以通过类的实例访问它:
var yourClass = new YourClass();
yourClass.pass.method(variable);
如果您希望它在没有创建类的对象的情况下可用,请将其设置为静态:
public static Robo_Pass pass = null;
然后你可以通过调用YourClass.pass.method(variable)
来获得它。只要记住确保它已经被初始化,或者检查它是否仍然是空的。