2011-01-20 6 views
1

C# WinForms에 익숙하지 않습니다. Form 클래스를 상속받은 클래스 (EnhancedForm)를 만들었습니다. EnhanceForm에서 필자는 공통된 기능 (예 : 유효성 검사, DataTable 및 문자열 변수 등의 공통된 객체를 사용하여 여러 번 같은 코드를 반복해서 작성하지 않아도 됨)을 모든 양식 및 다음 폼은이 (EnhancedForm)을 상속합니다.C# WinForms,이 이상한 오류가 무엇입니까?

DAL (별도의 클래스 라이브러리)에는 DB 관련 공통 기능을 가진 클래스 CommonDB 클래스가 있습니다. 데이터베이스 통신을 위해 나는 모든 형태로 CommonDB의 객체를 만들고있었습니다. CommonDB를 EnhancedForm에 넣어 모든 클래스에서 객체를 만들지 않아도된다고 생각했습니다.

내가 이해할 수없는 일이 여기에 있습니다. 응용 프로그램이 잘 실행됩니다. 하지만 디자인보기에서 양식을 열려고하면 오류가 발생합니다. "개체 참조가 개체의 인스턴스로 설정되지 않았습니다." 디자인 모드에서 양식을 볼 수 없습니다. EnhancedForm에서 CommonDb 개체를 제거하고 개별 양식에 넣으면 올바르게 작동하고 양식을 볼 수 있습니다.

이 오류를 컴파일하고 실행하면 표시되지 않습니다. 이 점에 대해 안내하고 도와주세요.

감사

답변

4

당신은 CommonDb 개체를 가정 EnhancedForm의 코드가 있습니다. 런타임에 (아마도 Form_Loaded에서) 생성하지만 디자인 타임에서는 빠져 있습니다.

가급적, 모든 코드 CommonDb가 null 확인해야 접근 및/또는 당신이 당신의 기본 폼의 생성자 내부에 CommonDB 클래스를 시작하는 것처럼 보인다 this.DesignMode

+0

VS/.NET의 최신 버전에 대해서는 잘 모르지만 (우리는 여전히 2005 년에 근무 중입니다), DesignMode 속성은 전혀 작동하지 않습니다. 바라건대 그들은 그것을 고쳤습니다. –

+0

헨크에게 안내해 주셔서 감사합니다. 그러나 이상한 일은 모든 형태에서 일어납니다. CommonDB 객체를 form1에 사용했지만 이것에 의해 수행 된 모든 양식의 디자인보기를 가정합니다. 두 번째로, EnhancedForm에서 사용자가 이스케이프 키를 누르면 폼을 닫는 기능을 수행했습니다. Commondb를 사용하기 시작하면이 기능이 작동을 멈 춥니 다. 나는 내가 잘못한 곳을 얻지 못한다. – haansi

+0

폼로드시에도 Commondb를 다시 인스턴스화하지만 문제는 여전히 남아 있습니다. 그것을 호출하기 전에도 null과 동일하지는 않지만 결과는 같습니다. Plz 조언. – haansi

1

. Visual Studio는 Reflection을 사용하여 디자인보기에서 폼의 생성자가 호출되도록 폼을 표시합니다. 디자인보기에서 양식을 볼 수 있는지 확인하기 위해 프로젝트를 다시 빌드 할 수는 있지만 작동한다고 생각하지는 않습니다.

관련 문제