C#在方法内部设置form.visible = false?

| 嗨,我有这行代码,我无法使其正常工作 目标很简单,将form1设置为visible = false
public static void DoActions(string Cmd){

if(Cmd == true)
{

MainForm.Visible = false;
}
}
但是我继续出现这个错误   需要一个对象引用   非静态字段,方法或   属性 通常我将被称为methond设置为static ..因此错误将消失 但是在这种情况下我该怎么办呢? 谢谢大家的帮助   \'System.Windows.Forms.Control.Invoke(System.Delegate)\'     
已邀请:
这是因为
DoActions
是静态方法而不是实例方法,而
MainForm
是实例字段/属性。区别在于实例方法在定义它们的类的实例上运行,而静态方法则不行。 这意味着wheras实例方法能够通过
this
关键字访问其包含类的属性,字段和方法,例如:
// Instance field
Form1 MainForm;

void InstanceMethod()
{
    Form1 frm = this.MainForm;
}
您不能从静态方法内部执行相同的操作(考虑一下,它将在什么实例上运行?)。请注意,C#将在有意义的地方隐式假定使用
this
关键字(因此,上面的示例可能被编写为
Form1 frm = MainForm
)。 有关静态方法与实例方法的替代说明,请参见C#静态方法(这是面向对象编程中的一个重要概念,您应该花一些时间来正确理解)。 在您的示例中,您可能想将ѭ1更改为实例方法(通过删除静态声明):
public void DoActions(string Cmd)
{
    if(Cmd == true)
    {
        this.MainForm.Visible = false;
    }
}
这将允许它访问实例
MainForm
的字段/属性,但是,这可能会在您尝试从另一个静态方法调用
DoActions
而不提供对象实例的位置的代码中引起其他问题。     
您的方法是静态的-因此无法访问MainForm。 如果不需要,使方法为非静态的。
public void DoActions(string Cmd)
{     if(Cmd == true)     {         MainForm.Visible = false;     } } 如果需要,请在您的类中创建一个静态字段,并确保在此方法运行之前对其进行了设置。     
在属性窗口中设置表单不透明度和showintaskbar属性:
        this.Opacity = 0;
        this.ShowInTaskbar = false;
    

要回复问题请先登录注册