2011-04-08 4 views
0

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

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

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

вот как установлены все свойства.

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

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

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

Возможно ли это?

ответ

0

Youd написать код вроде этого:

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

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

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

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

+0

Я бы не сказал, что это ошибка ООП. Я бы сказал, что это простое непонимание того, как работает ООП. – Chev

Смежные вопросы