2012-04-24 49 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