C# 多种形式和性质

C# 多种形式和性质,c#,forms,properties,C#,Forms,Properties,我正在使用C语言并尝试使用OOP 我正在做一个注册页面。在注册窗口窗体上,我将文本框中输入的所有值(firstname、lastname、username等)发送给一个用户类 User User=新用户(); user.FirstName=txtFirstName.Text 这就是所有属性的设置方式 一切都很好,但提交后,我打开了一个新的发票和付款形式。所以我关闭登记表,打开付款表。在付款表单中,当我尝试访问先前存储在用户类中的值时,我无法访问。对于字符串,所有属性都重置为null,对于双精度,

我正在使用C语言并尝试使用OOP

我正在做一个注册页面。在注册窗口窗体上,我将文本框中输入的所有值(firstname、lastname、username等)发送给一个用户类

User User=新用户();
user.FirstName=txtFirstName.Text

这就是所有属性的设置方式

一切都很好,但提交后,我打开了一个新的发票和付款形式。所以我关闭登记表,打开付款表。在付款表单中,当我尝试访问先前存储在用户类中的值时,我无法访问。对于字符串,所有属性都重置为null,对于双精度,所有属性都重置为0.00

我试图不关闭登记表,看看是否有效,但它仍然重置属性。因此,我认为它与在payment类中创建新对象有关

如何将注册表中的属性存储到用户类中,然后从付款表单访问这些属性


这可能吗?

在表单之间传递值。

您可以编写如下代码:

    public static class UserData
{
    public static string FirstName;
    public static bool Register(string firstName)
    {
        bool success = false;
        //probably db related code here
        if (success)
        {
            FirstName = firstName;
            return true;
        }
        return false;

    }
}
从现在起,您可以作为UserData.FirstName访问用户属性 我假设将有1个用户。如果我误解了您的问题,并且将有多个用户,那么您应该采取不同的方法,可能在某个有意义的地方保留对列表的静态引用(即使在UserData实例类中作为静态字段),并在注册完成时将最后保存的UserData实例添加到列表中。这样,您就可以从任何地方访问上次添加的对象,如UserDataList[UserDataList.Count-1]。FirstName

显然,您使用的是用户类的新实例,而不是对从表单数据初始化的对象的引用。这是一个传统的OOP错误。确保将该引用存储在某个位置,以免丢失。例如,在您自己的应用程序对象或主窗体中。甚至可以是静态变量,因为应该只有一个用户

User user = new User(); 
user.FirstName = txtFirstName.Text;

请注意,它永远无法正确处理该代码段。用户变量是一个局部变量。

我不会说这是一个OOP错误。我认为这只是对OOP工作方式的一个简单误解。