I';我正在制作一个c#windows表单facebook应用程序

I';我正在制作一个c#windows表单facebook应用程序,c#,C#,我完成了设计,现在制作了一个代码,当用户按login时,主页和个人资料页面中的默认名称将更改为用户名,下面是代码和问题的详细信息: 我在类的实例中将一个值设置为property,但它的值仅在形式1中更改,当我尝试在另一种形式中使用它的值时,它只返回null (这是表格一) (这是表格三) 代码的问题在于您正在创建Form1的新实例。要访问您的帐户属性,您需要执行以下操作之一: 传递表单:实例化表单时,可以将Form1传递给Form3: public Form3(Form1 caller) {

我完成了设计,现在制作了一个代码,当用户按login时,主页和个人资料页面中的默认名称将更改为用户名,下面是代码和问题的详细信息: 我在类的实例中将一个值设置为property,但它的值仅在形式1中更改,当我尝试在另一种形式中使用它的值时,它只返回null

(这是表格一)

(这是表格三)


代码的问题在于您正在创建
Form1
的新实例。要访问您的帐户属性,您需要执行以下操作之一:

传递表单:实例化表单时,可以将
Form1
传递给
Form3

public Form3(Form1 caller) {
    Form1 form1 = caller;
    MessageBox.Show($"{form1.AccountName}");
}
静态属性:您可以将帐户属性设置为静态,允许其他对象访问它,只要它已被实例化:

public class Form1 : Form {
    public static Account UserAccount { get; set; }
    public Form1() {
        UserAccount = new Account();
    }
}

public Form3() {
    MessageBox.Show($"{Form1.UserAccount.Name}");
}

是的,每个不同的表单实例将有不同的状态-这是正常的和预期的;你想发生什么事?如果你想把状态存储到某个地方,那么:你需要这样做,那么我能做什么呢?把状态存储到某个地方使用需要?老实说,这里的上下文是什么还不清楚,但是:在层之间传递的某种状态对象是一种常见的修复方法。静态字段可以工作,但很难看,不能扩展到多个使用者
public Form3(Form1 caller) {
    Form1 form1 = caller;
    MessageBox.Show($"{form1.AccountName}");
}
public class Form1 : Form {
    public static Account UserAccount { get; set; }
    public Form1() {
        UserAccount = new Account();
    }
}

public Form3() {
    MessageBox.Show($"{Form1.UserAccount.Name}");
}