2011-02-02 3 views
0

이 코드가 작동했습니다!ParentForm은 null입니다 (Form 내의 UserControl 내의 Button에 있음)!

내 단추 안에있는 내 UserControl이 내 양식에서 디자인 타임에 삭제되었습니다. 모든 것이 잘 작동했고 버튼의 이벤트에서 this.ParentForm을 호출했을 때 부모 폼으로 올바르게 반환되었습니다.

리팩터링 후 단추를 사용하여 UserControl을 다른 NameSpace로 이동 시켰으며 같은 코드가 더 이상 작동하지 않습니다. this.ParentForm이 NULL입니다.!

MSDN 사이트를 읽고 IE 또는 다른 컨텍스트에서 컨트롤이 호스팅되는 경우에만 this.ParentForm이 null을 반환한다고 말합니다. 하지만 네임 스페이스 만 옮겼습니다!

누구나 아이디어가 있습니까?

디자인 타임에 Visual Studio에서 양식을 렌더링하지 않기 때문에 다른 생성자를 사용하여 부모 폼을 전달할 수 없습니다.

답변

2

디자이너가 생성 한 코드가 포함 된 코드 숨김 파일을 확인하십시오. 이름을 바꾸는 동안 Visual Studio 디자이너를 혼동하게 만들었을 수 있으며 Form.designer.cs 파일에서 컨트롤의 인스턴스가 "고아"있을 수 있습니다.

특히 InitializeComponent 메서드의 코드를 살펴보고 UserControl의 인스턴스를 만들고 컨테이너에 추가하지 않거나 추가되지 않은 컨테이너에 코드를 추가 할 수 있는지 확인하십시오 형태.

+0

최고의 이론 나는 다른 괜찮은 설명이 없다고 생각합니다. –

+0

좋아, 문제가 해결되었고 해결책은 조금 이상했다. 사실 나는 "Costructor"의 this.ParentForm으로 내부 변수의 값을 설정했습니다. 이것은 작동하지 않았다. 그런 다음이 코드를 삭제하고 this.ParentForm을 필요할 때 직접 사용했습니다. 이제 작동합니다. – robob

3

컨트롤이 폼에 추가되기 전에 컨트롤의 상위 폼에 액세스하는지 확인하십시오.

코드가 사용자 컨트롤 클래스 초기화시 트리거되지만 컨트롤이 상위 폼에 추가되지 않았습니다.

이 코드를 제어로드 이벤트에 적용 해보십시오.

관련 문제