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