好的,所以我试图将一个布尔值从我的登录表单传递到我的Home表单,通常这对我来说没问题,我只会使用一个属性。但是我想我这次可以使用类似的方法,但我正在表单上实现单例工厂。
以下是与此相关的登录代码: 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();
}
以下是Home表单中的相关代码:
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 if循环运行时,该值会重置,因为创建了表单的新实例。我似乎无法想到如何修改它以获得有效的解决方案。你可以告诉我,我很业余,所以我只是想找到一个快速,干净的解决方案:) 非常感谢您提前的时间!
答案 0 :(得分:0)
在构造函数中,在实际设置AdminPermissions
属性之前分配值。像这样改变你的代码
public class HomeForm
{
public HomeForm()
{
InitializeComponent();
}
private bool adminPermissions;
public bool AdminPermissions
{
get { return adminPermissions; }
set {
adminPermissions = value;
textBox1.Text = value.ToString();
}
}
...
}
答案 1 :(得分:0)
尝试在其中一个textBox1.Text
个事件中设置Form
值。首先尝试Loaded
,然后Activated
。您每次都在构造函数中将其重置为false
!