C# 声明全局窗体

C# 声明全局窗体,c#,winforms,C#,Winforms,我想在表单上声明为全局变量,然后在应用程序中使用它。我不想使用下面的方法访问应用程序表单 Form1 myForm = new Form1(); 有人知道吗 谢谢我的方法是声明一个静态类,它具有静态变量Form1 public static class Global { private static Form1 myForm = new Form1(); public static bool Show() { myForm.Show(); }

我想在表单上声明为全局变量,然后在应用程序中使用它。我不想使用下面的方法访问应用程序表单

Form1 myForm = new Form1();
有人知道吗


谢谢

我的方法是声明一个静态类,它具有静态变量Form1

public static class Global
{
    private static Form1 myForm = new Form1();
    public static bool Show()
    {

        myForm.Show();
    }

    public static bool Hide()
    {
        myForm.Close();
    }
}

这不是一个好方法?

我的方法是声明一个静态类,该类具有静态变量Form1

public static class Global
{
    private static Form1 myForm = new Form1();
    public static bool Show()
    {

        myForm.Show();
    }

    public static bool Hide()
    {
        myForm.Close();
    }
}


这不是一个好方法?

看起来你希望你的表单是一个,这不是我最喜欢的模式,但它胜过了一个全局模式

看起来你希望你的表单是一个,这不是我最喜欢的模式,但它胜过了一个全局模式

我有个主意。不要那样做。全局变量是邪恶的。你想实现什么?可能有一种比使整个表单全局化更好的方法。我建议您先读一本关于C#和面向对象编程基础知识的好书。你不想这样做的方式是正确的。我有个主意。不要那样做。全局变量是邪恶的。你想实现什么?可能有一种比使整个表单全局化更好的方法。我建议您先读一本关于C#和面向对象编程基础知识的好书。你不想让它这样做的方式是正确的,它不是。当用户关闭表单时,此代码将爆炸。如果您阻止用户关闭表单,这将是永久性内存泄漏。为什么需要这个?您必须确保从不调用Close(),因为这会处理表单。nobugz:我需要这个,因为我想随时显示/隐藏表单1。杰森:谢谢,我把close改为hide。请确保你也取消了表单上任何用户调用的close并将其隐藏,否则你会遇到同样的问题。当用户关闭表单时,此代码将爆炸。如果您阻止用户关闭表单,这将是永久性内存泄漏。为什么需要这个?您必须确保从不调用Close(),因为这会处理表单。nobugz:我需要这个,因为我想随时显示/隐藏表单1。杰森:谢谢,我把“关闭”改为“隐藏”。请确保你也取消了表单上任何用户调用的“关闭”并将其隐藏,否则你将遇到与singleton相同的问题,只要你只隐藏而不关闭表单。但事实上,比一个全球性的好。亨克是正确的。调用close将导致窗体被释放,这意味着您必须重新创建它以便再次显示它,这将破坏单例的用途。我同意其他海报上的说法,他们认为整个想法可能不好,但如果你有充分的理由,这是可以做到的。只要你只隐藏,不关闭表单,单身人士就可以做到。但事实上,比一个全球性的好。亨克是正确的。调用close将导致窗体被释放,这意味着您必须重新创建它以便再次显示它,这将破坏单例的用途。我同意其他海报的说法,他们认为整个想法可能不好,但如果你有充分的理由,这是可以做到的。