2009-12-19 82 views
0

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

Form1 myForm = new Form1(); 

任何人有什么想法?

感谢

+0

为什么不呢? _______ – Nifle 2009-12-19 15:19:31

+1

我有一个想法。不要这样做。全局变量是邪恶的。 – Marek 2009-12-19 15:19:59

+1

你想达到什么目的?可能比将整个表单全局化更好。 – keyboardP 2009-12-19 15:20:58

回答

3

看起来像你想要你的表格是Singleton,这不是我最喜欢的模式,但它击败了全球。

+0

只要您隐藏并不关闭窗体,单身人员就会执行此操作。但的确,比全球更好。 – 2009-12-19 16:31:50

+0

亨克是正确的。调用关闭会导致表单被处理,这意味着您必须重新创建它才能再次显示,这将打破单例的目的。 我同意其他海报提出的整个想法可能不好,但如果你有一个很好的理由,它可以做到。 – 2009-12-19 16:59:41

0

我的方式宣布其具有静态变量Form1的静态类。

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

     myForm.Show(); 
    } 

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

这不是好方法吗?

+0

不是。当用户关闭表单时,此代码将会弹出。如果你阻止用户关闭表单,这是永久性的内存泄漏。你为什么需要这个? – 2009-12-19 16:26:14

+0

您必须确保Close()永远不会被调用,因为这会处理表单。 – 2009-12-19 17:02:04

+0

nobugz:我需要这个,因为我想每次显示/隐藏Form1。杰森:谢谢,我改变了近乎隐藏。 – Sadegh 2009-12-19 17:44:52