2011-04-08 3 views
0

저는 C# 언어로 작업 중이며 OOP를 사용하려고합니다.여러 양식 및 속성

등록 페이지를 만들려고합니다. 등록 창에서 나는 텍스트 상자 (firstname, lastname, username 등)에 입력 된 모든 값을 User 클래스에 보냅니다. 모든 속성을 설정하는 방법을

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

이잖아.

모든 항목이 훌륭하게 작동하지만 제출 후 인보이스 발행 및 결제를 위해 새 양식을 엽니 다. 그래서 나는 등록 양식을 닫고 지불 양식을 엽니 다. 지불 양식에서 이전에 User 클래스에 저장 한 값에 액세스하려고하면 할 수 없습니다. 모든 속성은 문자열의 경우 null로, double의 경우 0.00으로 재설정됩니다.

등록 양식을 닫지 않아도 작동하는지 확인하려고했지만 속성을 재설정합니다. 그래서 그것은 지불 클래스에서 새로운 객체를 생성하는 것과 관련이 있다고 생각합니다.

등록 양식의 등록 정보를 사용자 클래스에 저장 한 다음 지불 양식에서 등록 정보에 액세스하려면 어떻게합니까?

그럴 수 있습니까?

답변

1

Here are some options for you은 양식간에 값을 전달할 수 있습니다. 한 사용자가있을 것입니다 내가 가정 지금부터

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 으로 사용자 속성에 액세스 할 수 있습니다

0

youd가 몇 가지 같은 코드를 작성합니다. 귀하의 질문에 오해하고 거기에 1 개 이상의 사용자가있을 경우 다른 접근 방식을 아마도 List 어딘가에 (심지어 정적 필드로 UserData 인스턴스 클래스에서) 어딘가에 정적 참조를 개최하고 마지막으로 저장된 UserData를 추가해야합니다 등록 완료시 인스턴스를 목록에 추가하십시오. 당신이 UserDataList처럼 사방에서 마지막으로 추가 된 객체에 ACESS 수있는 방법 [UserDataList.Count - 1] 분명히 당신이 사용자 클래스가 아닌 사용자가 초기화 된 객체에 대한 참조의 새로운 인스턴스를 사용하는

1

을 .FirstName 양식 데이터에서. 이것은 전통적인 OOP 버그입니다. 참조를 어딘가에 저장하여 추적을 잃지 않도록하십시오. 자신의 응용 프로그램 개체 또는 기본 폼 예를 들어. 정적 변수 일 수도 있습니다. 단 하나의 사용자 만 있어야하기 때문입니다.

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

해당 스 니펫으로는 절대로 올바르게 작동하지 않을 수 있습니다. 사용자 변수는 지역 변수입니다.

+0

나는 이것이 OOP 버그라고 말하지 않을 것입니다. 나는 이것이 OOP의 작동 방식에 대한 간단한 오해라고 말하고 싶다. – Chev