如何从方法中实例化全局或 public 对象? C#
How to Instantiate a global or public object from within a method? C#
我研究这个已经一个多星期了,但我很困惑。
我在 windows 中使用多个表单。每个表单都驻留在自己的命名空间中。在下面的代码中,我实例化了 class Robo_Pass 的新形式。它驻留在命名空间 Space_Pass 中。我正在使用的表单是 class 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" 的对象成为程序其余部分的全局对象。
换句话说,从这个 class 中的其他方法,我希望能够像这样调用其他表单上的方法:
pass.method(variable);
如果我在方法之外创建对象 "pass",我实际上可以做到这一点。
换句话说,如果我将以下代码移到它起作用的任何方法之外:
Robo_Pass pass = new Robo_Pass();
然后我可以使用
访问其中的方法
pass.method(variable);
但我需要在最初显示的按钮单击方法中创建此对象。
所以我的问题是这样的。
有什么方法可以在那个按钮方法中创建这个对象,并让这个对象在其他方法中可用。
我尝试添加静态、public、全局等关键字。但是我的 IDE 拒绝了所有在这种情况下的人。
所以我不知道如何让这个名为 "pass" 的对象可用于此 class 中的其他方法。
正如我所说,如果我在方法之外实例化它,它就像一个魅力。但不能那样做。我需要能够使用按钮实例化它。
注意:对于此 post 中的任何格式错误或拼写错误,我深表歉意。我不 post 经常来这里,但我真的被这个难住了。希望这是一个简单的修复。我只是不知道该怎么做。
将变量声明移到您的方法之外并使其成为 public,然后在您的方法中实例化它:
public Robo_Pass pass = null;
public void Btn_Robo_Pass_Click(object sender, EventArgs e)
{
...
pass = new Robo_Pass();
...
}
您现在可以通过 class:
的实例访问它
var yourClass = new YourClass();
yourClass.pass.method(variable);
如果您希望它在不创建 class 的对象的情况下可用,请将其设为静态:
public static Robo_Pass pass = null;
那么你只要调用YourClass.pass.method(variable)
就可以得到它。请记住先确保它已被初始化,或者检查它是否仍然为空。
我研究这个已经一个多星期了,但我很困惑。
我在 windows 中使用多个表单。每个表单都驻留在自己的命名空间中。在下面的代码中,我实例化了 class Robo_Pass 的新形式。它驻留在命名空间 Space_Pass 中。我正在使用的表单是 class 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" 的对象成为程序其余部分的全局对象。
换句话说,从这个 class 中的其他方法,我希望能够像这样调用其他表单上的方法:
pass.method(variable);
如果我在方法之外创建对象 "pass",我实际上可以做到这一点。 换句话说,如果我将以下代码移到它起作用的任何方法之外:
Robo_Pass pass = new Robo_Pass();
然后我可以使用
访问其中的方法pass.method(variable);
但我需要在最初显示的按钮单击方法中创建此对象。
所以我的问题是这样的。
有什么方法可以在那个按钮方法中创建这个对象,并让这个对象在其他方法中可用。
我尝试添加静态、public、全局等关键字。但是我的 IDE 拒绝了所有在这种情况下的人。
所以我不知道如何让这个名为 "pass" 的对象可用于此 class 中的其他方法。
正如我所说,如果我在方法之外实例化它,它就像一个魅力。但不能那样做。我需要能够使用按钮实例化它。
注意:对于此 post 中的任何格式错误或拼写错误,我深表歉意。我不 post 经常来这里,但我真的被这个难住了。希望这是一个简单的修复。我只是不知道该怎么做。
将变量声明移到您的方法之外并使其成为 public,然后在您的方法中实例化它:
public Robo_Pass pass = null;
public void Btn_Robo_Pass_Click(object sender, EventArgs e)
{
...
pass = new Robo_Pass();
...
}
您现在可以通过 class:
的实例访问它var yourClass = new YourClass();
yourClass.pass.method(variable);
如果您希望它在不创建 class 的对象的情况下可用,请将其设为静态:
public static Robo_Pass pass = null;
那么你只要调用YourClass.pass.method(variable)
就可以得到它。请记住先确保它已被初始化,或者检查它是否仍然为空。