2012-11-09 3 views
0

모두 싱글 톤 패턴을 사용하여 호출되는 사용자 정의 사용자 정의 컨트롤이 있습니다. 이 컨트롤은 표시하거나 숨길 수 있으며 UI를 업데이트하여 (컨트롤 표시/숨기기 옵션을 제공하기 위해) controls 생성자에서 이벤트 핸들러를 설정합니다.사용자 정의 컨트롤 이벤트 처리기 문제

this.VisibleChanged += new EventHandler(ResultsControl_VisibleChanged); 

이벤트 핸들러는

void ResultsControl_VisibleChanged(object sender, EventArgs e) 
{ 
    // Get reference to Show/Hide button. 
    var showHideResults = ((SqlEditorForm)this.ParentForm).ShowHideResultsButton; 
    if (instance != null) 
     showHideResults.Enabled = true; 

    // Change the status. 
    showHideResults.Text = this.Visible ? 
     "&Hide Query Results" : 
     "&Show Query Results"; 
    showHideResults.Image = this.Visible ? 
     Properties.Resources.HideResultsVS201224 : 
     Properties.Resources.ShowResultsVS201224; 
} 

문제는 내가 ShowHideResultsButton에 대한 참조를 얻고 방식에입니다. 나는

DesignerError

내가 여기 무슨 일을하고있는 중이 야 ... 디자이너에서 던진 다음과 같은 오류는 무엇입니까?

감사합니다.


편집. 나는 컨트롤로드 이벤트에 생성자에서

this.VisibleChanged += new EventHandler(ResultsControl_VisibleChanged); 

를 이동하여이 문제를 해결 한 것 같다. 그래서 문제는 이제 유효합니다 : 이것이 유효한 수정입니까?

+0

ResultsControl의 상위 폼이 SqlEditorForm입니까? –

+0

예. 이것은 응용 프로그램의 기본 양식이며 전체 응용 프로그램에는 두 가지 양식 만 있습니다. – MoonKnight

+0

그리고 ResultsControl이 켜져 있습니까? 아니면 다른 양식입니까? –

답변

1

UserControl을 디자인하는 순간에는 SqlEditorForm에 대한 참조가 없습니다. 디자이너가 또는 코드를 사용하여 을 SqlEditorForm에 올린 경우에만 ParentForm 속성이 SqlEditorForm이됩니다. 그때까지 IDE는 Form 유형이라는 것을 알고 있습니다. ResultsControl_VisibleChanged 이벤트 핸들러를 SqlEditorForm 내에 구현하면 어떨까요?

+0

귀하의 답변에 +1 Tahnks. 결국 나는 desiger를 사용하여 실행 가능한 변경 이벤트 처리기를 설정했습니다. 나는 이것이 작동하는지 지금 시험 할 것이다. 여기에 시간을내어 주셔서 감사합니다 ... – MoonKnight

관련 문제