我創建一個小的軟件時。 我有三種形式讓我頭痛。其中兩種形式是單身人士。辛格爾頓的構造運行改變形式
的形式不是一個Singleton是一個登錄表單其僅假定要顯示的應用程序啓動時。然後當登錄表單中輸入正確的用戶名和密碼時,我會看到一個mainform。這工作。
然後從MenuStrip中,您可以切換到包含用戶列表和這些的一些信息的另一種形式。在該表單上,我有一個可以將您帶回到mainform的按鈕。當我按下該按鈕時,不再直接將我帶回到mainform,而是再次向我呈現登錄表單。
代碼觸發從的MenuStrip項點擊,帶你從MainForm的用戶窗體:
private void miBrugere_Click(object sender, EventArgs e)
{
userForm = Userform.Instance;
this.Hide();
userForm.Show();
}
代碼,它應該把你從用戶窗體和回的MainForm:
private void btnBack_Click(object sender, EventArgs e)
{
Mainform mainForm = Mainform.Instance;
this.Hide();
mainForm.Show();
}
private void Mainform_Load(object sender, EventArgs e)
{
if (firstLoad)
{
firstLoad = false;
Loginform loginForm = new Loginform();
this.Hide();
loginForm.ShowDialog();
}
}
的firstLoad VARI:那我的MainForm的負荷運行
代碼能夠在全班範圍內。打電話時
public Userform()
{
InitializeComponent();
dgvUsers.AllowUserToAddRows = false;
Mainform mainForm = Mainform.Instance;
connString = mainForm.connString;
--Awesome stuff--
}
而且很顯然,:
在此先感謝:-)
我熬下來的時候我在我的用戶窗體首次創建一個實例運行此代碼Mainform.instance,該實例爲null,因此它創建了一個新的mainform實例,而不是檢索已經使用的實例。當然,這意味着由於firstLoad是一個全班範圍的變量,所以它會再次設置爲true。
如何'Mainform.Instance'實施? – sloth
@DominicKexel公共靜態的MainForm實例 { 得到 { 如果(例如== NULL){ 例如 =新的MainForm(); } return instance; }} –
你在你的代碼分配_firstLoad = true_?哪裏? – BitExodus