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();
    }

ホームフォームからの関連コードは次のとおりです。

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

いずれかのイベントtextBox1.Textで値を設定してみてください。最初にForm試してから、 。コンストラクターで毎回リセットします!LoadedActivatedfalse

于 2012-04-24T14:44:33.313 に答える
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 に答える