我的问题是bool rememberMe
自动将其值设置为false,我不知道为什么
public partial class Example1 : Form
{
public Example1()
{
InitializeComponent();
}
public bool rememberMe;
public void TryLogin()
{
if (checkboxRememberMe.Checked)
rememberMe = true;
else
rememberMe = false;
var e2 = new Example2();
}
public bool CheckRememberMe()
{
if (rememberMe == true)
return true;
else
return false;
}
}
public partial class Example2 : Form
{
public Example2()
{
InitializeComponent();
var lf = new Example1();
if (lf.CheckRememberMe() == true)
// ...
else
// ...
}
}
如您所见,这是Windows Forms App。首先是TryLogin()
方法,它将rememberMe
设置为true
。然后,public Example2()
运行。问题在于脚本的这一部分
var lf = new LoginForm();
if (lf.CheckRememberMe() == true)
// ...
else
// ...
显示lf.CheckRememberMe()
等于false
。有什么问题,我该如何解决?
答案 0 :(得分:1)
var lf = new LoginForm();
这将创建一个新 LoginForm-这样就不会进行其他登录表单所做的更改。
您将必须传递变量,或使其变为静态。
尝试将构造函数更改为:
public Example2(bool rememberMe){
this.rememberMe = rememberMe;
InitializeComponent();
}
然后通过它:
var e2 = new Example2(rememberMe);
或者您可以(但可能不应该)将其更改为静态变量:
public static bool rememberMe;
并按类名引用:
if (Example1.rememberMe == true)
如果您只是想使其快速运行-但请继续阅读面向对象的基础知识