2010-01-21 4 views
2

사용자 지정 컨트롤을 만들고 있습니다. 예를 들어, UserControl 클래스에서 파생 된 사용자 정의 Button 컨트롤을 만드는 중입니다.사용자 지정 컨트롤 이벤트를 발생시키는시기는 언제입니까?

글쎄, 당연히 Click 이벤트 핸들러가 있습니다. 이제 내 문제는 언제이 이벤트 처리기를 호출할까요? Pages OnLoad와 OnLoadComplete 사이에 언젠가는 일어난다는 것을 알지만 어떤 이벤트에 연결하여 Click 이벤트가 다른 컨트롤 이벤트와 동시에 발생하게되는지 잘 모르겠습니다.

언제 사용자 지정 컨트롤 이벤트를 호출 할 예정입니까?

답변

2

일반적으로 기본 이벤트가 발생하는 즉시 이벤트를 발생시켜야합니다.

예를 들어 ASP.NET Button 컨트롤을 사용하여 클릭 한 것을 어떻게 알 수 있습니까? IPostBackEventHandler 및 RaisePostBackEvent() 메소드를 구현합니다. 이 메서드는 컨트롤과 관련된 포스트 백 이벤트 데이터가 있으면 호출됩니다. 연관성은 렌더링하는 "이름"속성에 의해 결정됩니다. 그런 다음 RaisePostBackEvent()에서 Click 이벤트를 발생시킵니다.

대답해야 할 질문은 다음과 같습니다. 통제가 이벤트를 발생시켜야한다는 것을 어떻게 알 수 있습니까? 일단 우리가 나머지는 쉽다는 것을 알게됩니다.

컨트롤이 기존 ASP.NET 컨트롤과 유사하다면 stepping through the ASP.NET source code을 권장하고 이러한 컨트롤의 작동 방식을 확인하십시오. 당신이 IPostbackEventHandler을 구현하는 경우

1

, 당신은 디 컴파일에서 가져온 이런 일을 할 수 System.Web.Ui.WebControls.Button

protected virtual void RaisePostBackEvent(string eventArgument) 
{ 
    base.ValidateEvent(this.UniqueID, eventArgument); 
    if (this.CausesValidation) 
    { 
     this.Page.Validate(this.ValidationGroup); 
    } 
    this.OnClick(EventArgs.Empty); 
    this.OnCommand(new CommandEventArgs(this.CommandName, this.CommandArgument)); 
} 
관련 문제