0

好的,所以我试图将一个布尔值从我的登录表单传递到我的主页表单,通常这对我来说很好,我只会使用一个属性。但是我认为这次我可以使用类似的方法,但我正在表单上实现单例工厂。

这是与此相关的登录代码: 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 循环在创建表单的新实例时运行时,该值将被重置。我似乎无法考虑如何修改它以获得有效的解决方案。如您所知,我相当业余,所以我只是在寻找一种快速而干净的解决方案:) 非常感谢您提前抽出时间!

4

2 回答 2

0

AdminPermissions在实际设置属性之前,您在构造函数中分配值。像这样更改您的代码

public class HomeForm
{
    public HomeForm()
    {
        InitializeComponent();
    }

    private bool adminPermissions;  
    public bool AdminPermissions
    {
        get { return adminPermissions; }
        set { 
            adminPermissions = value;
            textBox1.Text = value.ToString();
        }
    }

    ...
}
于 2012-04-24T14:38:21.990 回答
0

尝试在其中一个事件中设置textBox1.Text值。先试,Form再试。您在构造函数中将其重置为每次!LoadedActivatedfalse

于 2012-04-24T14:44:33.313 回答