2013-02-13 92 views
0

我在窗體之間滾動時保持值的問題。我有兩個Windows窗體。其中之一是主,另一個是NEWUSER在Windows窗體之間保存值

雖然我在主,點擊更改用戶按鈕:

NewUser yk = new NewUser(); 
     yk.ShowDialog(); 

當NEWUSER形式負載:

private void NewUser_Load(object sender, EventArgs e) 
    { 
     if (impersonatedUser == null) 
     { 
      txtNewUserName.Select(); 
      return; 
     } 


     btnRevert.Enabled = true; //user may revert back to the old user 
     btnLogon.Enabled = false; 
     txtNewUserName.Enabled = false; 
     txtPassword.Enabled = false; 
     btnRevert.Select();    
    } 

回覆:

private void btnRevert_Click(object sender, EventArgs e) 
    { 
     // revert to previous user 
     impersonatedUser.Undo(); 
     btnRevert.Enabled = false; 
     btnLogon.Enabled = true;    
    } 

後,我模擬的用戶,我可以還原爲用戶,但如果我關閉表單,然後單擊主中的更改用戶按鈕以還原用戶,我期望在此會話中已經模擬,以便impersonatedUser不爲null,並且btnRevert.enabled = true;但一切都始於創造一種新形式。因此我無法恢復如果我不想在NewForm中丟失變量,我應該怎麼做?我應該使用this.Visible = false而不是this.Close()等等?順便說一下,我在模仿中沒有任何問題。

回答

1

你在主窗體的代碼

NewUser yk = newUser() 
yk.ShowDialog() 

總會創造NewUser形式的新對象。因此,如果您的對象impersonatedUser在類NewUser中聲明,它將被重新初始化爲新的。

如果,我猜,你足以讓在對象impersonatedUser的內存的信息,那麼您可以在Main形式創建的impersonatedUser一個對象並把它傳遞給NewUser形式。

Main形式:

Private YourClassOfUser impersonatedUser; 

NewUser形式:

Private YourClassOfUser impersonatedUser; 
//Then create a custom constructor with parameter 
Public void NewUser(YourClassOfUser inImpersonatedUser) 
{ 
    this.impersonatedUser = inImpersonatedUser; 
} 

,然後在Main形式打開NewUser形式與此構造

NewUser yk = newUser(this.impersonatedUser); 
yk.ShowDialog(); 

如果可以的話展示一些關於你如何初始化的代碼編impersonatedUser對象在NewUser形式的答案可以小投標另一

+0

好的,解決了我的問題。謝謝你:=) – cihata87 2013-02-15 11:22:30