2012-04-24 50 views
0

好的,我试图从我的登录表单传递一个布尔值到我的Home窗体,通常这对我来说很好,我只是使用一个属性。不过,我想这次我可以使用类似的方法,但我正在实现表单上的单件工厂。使用Singleton时在Winforms之间传递属性

以下是与此相关的登录代码: AdminAccess属性设置正确,并且已检查该值是否正确。

private bool adminAccess; 

public bool AdminAccess 
    { 
     get { return adminAccess; } 
     private set { adminAccess = value; } 
    } 

private void btnLogin_Click(object sender, EventArgs e) 
    { 
     //Some Code Does Stuff 

     OpenHome(); 
    } 

private void OpenHome() 
    { 
     HomeForm CreateHomeForm = HomeForm.HomeUI; 
     CreateHomeForm.StartupHome = this; 

     //Trying to set the property. 
     CreateHomeForm.AdminPermissions= this.AdminAccess; 

     CreateHomeForm.Show(); 
     this.Hide(); 
    } 

下面是从家庭形式的相关代码:

public HomeForm() 
    { 
     InitializeComponent(); 
     //just to check what is in the property quickly 
     textBox1.Text = AdminPermissions.ToString(); 
    } 

private bool adminPermissions; 
public bool AdminPermissions 
    { 
     private get { return adminPermissions; } 
     set { adminPermissions = value; } 
    } 

public Form StartupHome 
    { 
     set; 
     get; 
    } 

private static HomeForm homeUI; 
public static HomeForm HomeUI 
    { 
     get 
     { 
      if (homeUI == null || homeUI.IsDisposed) 
      { 
       homeUI = new HomeForm(); 
      } 
      return homeUI; 
     } 
    } 

值上,如果循环运行为创建HomeUI形式的新实例时复位。我似乎无法想象如何修改此以获得工作解决方案。正如你可以告诉我相当业余,所以我只是寻找一个快速和干净的解决方案:) 非常感谢您的时间提前!

回答

0

在赋值AdminPermissions之前,在构造函数中赋值。改变这样的

public class HomeForm 
{ 
    public HomeForm() 
    { 
     InitializeComponent(); 
    } 

    private bool adminPermissions; 
    public bool AdminPermissions 
    { 
     get { return adminPermissions; } 
     set { 
      adminPermissions = value; 
      textBox1.Text = value.ToString(); 
     } 
    } 

    ... 
} 
+0

感谢您的帮助,再加上使用来自其他答案中给出的显示事件帮助解决了我的问题!我曾希望这是我做一些愚蠢的事情:) – 2012-04-24 15:13:27

0

你的代码尝试在Form事件之一设置textBox1.Text值。先尝试Loaded,然后Activated。每次在构造函数中将它重置为false

+0

谢谢我尝试了Load和Activated,但两者总是显示为False!但它确实导致我查找表格的启动顺序,并发现我需要使用Shown事件:D因此,感谢您的帮助。 – 2012-04-24 15:11:57

+0

@杰克,啊,对。我永远不会记得表格生存时间表。因为,当然,我只是在需要的时候查看它;) – 2012-04-24 15:20:06