2011-04-08 62 views
0

我正在使用C#语言并尝试使用OOP。多种形式和属性

我想做一个注册页面。在注册窗口窗体上,我将所有在文本框中输入的值(名字,姓氏,用户名等)发送到用户类。

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

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

一切正常,但提交后,我打开一个新的表单开具发票和付款。所以我关闭了注册表单并打开了付款表格。在付款表单中,当我试图访问我在User类中存储的值时,我不能。对于字符串,所有属性都重置为null,对于双精度值则为0.00。

我试图不关闭注册表单来查看是否有效,但它仍然重置属性。所以我认为这与在支付类中创建新对象有关。

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

这可能吗?

回答

0

你几乎写这样的一些代码:

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个用户。如果我误解了你的问题,并且会有超过1个用户,你应该采取不同的方法,可能在某个地方持有对List有用的静态引用(即使在UserData实例类中是静态字段),并添加最后保存的UserData实例到完成注册时的列表。这样你可以接取到最后添加的对象来自世界各地喜欢UserDataList [UserDataList.Count - 1] .FirstName

1

显然您正在使用的用户类,而不是你初始化的参考对象的实例来自表单数据。这是一个传统的OOP错误。请务必在某处存储该引用,以免丢失该引用。例如,在您自己的应用程序对象或主窗体中。甚至可能是一个静态变量,因为应该只有一个用户。

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

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

+0

我不会说这是一个OOP错误。我会说这是对OOP工作方式的一个简单误解。 – Chev 2011-04-09 07:11:46