我已经研究了一个多星期,但我感到很困惑。
我正在Windows中处理多种表单。每个表单都驻留在其自己的名称空间中。在下面的代码中,我实例化了Robo_Pass类的新形式。它位于命名空间Space_Pass中。我正在使用的表单是Overseer类,并且位于名称空间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);
但是我需要在最初显示的按钮click方法中创建该对象。
所以我的问题是这个。
有什么方法可以在该按钮方法中创建该对象,并使该对象在其他方法中可用。
我尝试添加静态,公共,全局等关键字。但是我的IDE在这种情况下拒绝所有这些。
因此,我无所适从如何使此名为“ pass”的对象可用于此类中的其他方法。
正如我所说,如果我在方法之外实例化它,它就像一个超级按钮。但是不能那样做。我需要能够使用按钮实例化它。
注意:对于本文中的任何格式错误或错字,我深表歉意。我不经常在这里发帖,但我真的很为难。希望这是一个简单的修复。我只是不知道该怎么做。
答案 0 :(得分:0)
将变量声明移到您的方法之外并使其公开,然后在您的方法中实例化它:
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)
就可以得到它。只需记住确保已首先对其进行初始化,或者进行检查以查看其是否仍为空。