多个表单和属性

本文关键字:属性 表单 | 更新日期: 2023-09-27 17:49:24

我正在使用c#语言并尝试使用OOP。

我正在尝试做一个注册页面。在注册窗口表单中,我将文本框中输入的所有值(姓、名、用户名等)发送给一个User类。

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

所有的属性都是这样设置的。

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

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

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

这可能吗?

多个表单和属性

这里有一些选项供您在表单之间传递值。

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

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

请注意,它永远不能正确地使用该代码片段。user变量是一个局部变量

你可以这样写代码:

    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个用户,你应该采取不同的方法,可能在某个有意义的地方保持对列表的静态引用(即使在UserData实例类中作为静态字段),并在完成注册后将最后保存的UserData实例添加到列表中。这样你就可以从任何地方访问最后添加的对象,比如UserDataList[UserDataList]。计数- 1]。FirstName