Winforms 在Windows窗体之间保存值
在窗体之间滚动时,我在保存值方面遇到问题。我有两张Windows窗体。其中一个是Main,另一个是NewUser 当我在Main中时,单击更改用户按钮:Winforms 在Windows窗体之间保存值,winforms,c#-4.0,Winforms,C# 4.0,在窗体之间滚动时,我在保存值方面遇到问题。我有两张Windows窗体。其中一个是Main,另一个是NewUser 当我在Main中时,单击更改用户按钮: NewUser yk = new NewUser(); yk.ShowDialog(); 加载新用户表单时: private void NewUser_Load(object sender, EventArgs e) { if (impersonatedUser == null) {
NewUser yk = new NewUser();
yk.ShowDialog();
加载新用户表单时:
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;
}
模拟用户后,我可以还原回该用户,但如果我关闭表单,然后单击Main中的“更改用户”按钮来还原用户,我希望在该会话中已模拟该用户,因此impersonatedUser不为null且btnRevert.enabled=true;但一切都是从创造一种新形式开始的。因此,如果我不想在NewForm中丢失变量,我就不能恢复,我应该怎么做?我应该使用this.Visible=false而不是this.Close()等吗。?顺便说一句,我在模拟方面没有任何问题。您的代码以主窗体显示
NewUser yk = newUser()
yk.ShowDialog()
将始终创建NewUser
表单的新对象。因此,如果您的对象impersonatedUser
在类NewUser
中声明,它将再次初始化为new
我想,如果您有足够的时间在内存中保存对象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();
如果您可以在NewUser
表单中显示一些关于如何初始化impersonatedUser
对象的代码,那么答案可能是另一个