несколько форм и свойств - PullRequest
       4

несколько форм и свойств

0 голосов
/ 09 апреля 2011

Я работаю с языком C # и пытаюсь использовать ООП.

Я пытаюсь сделать страницу регистрации. В форме окна регистрации я отправляю все значения, введенные в текстовые поля (имя, фамилия, имя пользователя и т. Д.), В класс User.

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

вот как устанавливаются все свойства.

Все отлично работает, но после отправки я открываю новую форму для выставления счетов и оплаты. Поэтому я закрываю регистрационную форму и открываю форму оплаты. В форме оплаты, когда я пытаюсь получить доступ к значениям, которые я ранее хранил в классе User, я не могу. Все свойства возвращаются к нулю для строк и 0,00 для двойников.

Я пытался не закрывать регистрационную форму, чтобы проверить, работает ли она, но все равно сбрасывает свойства. Поэтому я полагаю, что это как-то связано с созданием нового объекта в классе оплаты.

Как сохранить свойства из формы регистрации в классе пользователя, а затем получить доступ к этим свойствам из формы оплаты?

Это возможно?

Ответы [ 3 ]

1 голос
/ 09 апреля 2011

Очевидно, что вы используете новый экземпляр класса User, а не ссылку на объект, который вы инициализировали из данных формы. Это традиционная ошибка ООП. Обязательно храните эту ссылку где-нибудь, чтобы не потерять ее. В вашем собственном объекте приложения или основной форме, например. Может даже быть статической переменной, поскольку должен быть только один пользователь.

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

Обратите внимание, что он никогда не сможет правильно работать с этим фрагментом. Переменная user является локальной переменной.

1 голос
/ 09 апреля 2011

Вот несколько вариантов для передачи значений между формами.

0 голосов
/ 09 апреля 2011

Вы напишите такой код:

    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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...