우리는 전편에서 이벤트의 간략한 소개와 예제를 통해 이벤트의 사용 방법을 익혀보았습니다. 이번편 부터는 이벤트를 활용할 수 있는 예제들을 중심으로 소개하려고 합니다. 아마 그동안 이벤트가 뭉게구름처럼 정확하게 머리 속에 그려지지 않았다면, 이번 예제들을 통해 확실히 이벤트의 개념에 대해 알 수 있을 것 같습니다.
 
 
유저컨트롤에서 페이지로 값 전달
1편에서 선언부와 구현부의 분리로 점차적으로 프로그램을 보다 융통성 있게 만들 수 있다고 하였습니다.  페이지로 값을 이벤트를 통해 전달하는 방법을 살펴보겠습니다.
 
우선 우리가 사용할 이벤트 인자를 넘길 ReceiveEventArgs 클래스를 만들 것입니다. 이 ReceiveEventArgs 는 이벤트가 발생할 때 이벤트가 전달하는 Argument(인자)를 전달받을 수 있기 위함입니다.
 
받을 인자는 간단한 string 값으로 하겠습니다.
 
ReceiveEventArgs.cs
public class ReceiveEventArgs : EventArgs
{
        public string Item { get; set; }
}
 
유저컨트롤을 만들기 전에 UserControlBase 를 만들 것입니다. 이 UserControlBase 에는 기본적인 델리게이트와 이벤트를 선언하고 이벤트를 발생시키는 메서드가 포함이 됩니다.
 
UserControlBase.cs


public delegate void ReceiveEventHandler(object sender, ReceiveEventArgs e);
 
public class UserControlBase : System.Web.UI.UserControl
{
        public event ReceiveEventHandler ReceiveEvent;
 
        protected void OnRecevieEvent(object sender, ReceiveEventArgs e)
        {
               if( ReceiveEvent != null )
                       ReceiveEvent( sender, e);
        }
}
 
복잡하게 생각할 것 없이, 1편에서 보던 간략한 예제를 클래스 별로 분리하였다고 보시면 됩니다.
 
그럼 이제 유저컨트롤을 만들어 보겠습니다. 유저컨트롤에는 RadioButtonList 를 두고 아이템을 선택 후 전달 버튼을 누르면 이벤트를 발생하는 부분이 포함될 것입니다.
 
WebUserControl1.ascx.cs
public partial class WebUserControl1 : UserControlBase
{
        protected void Page_Load(object sender, EventArgs e) { }
 
        protected void Button1_Click(object sender, EventArgs e)
        {
               OnRecevieEvent(sender,
new ReceiveEventArgs{ Item=RadioButtonList1.SelectedItem.Text });
        }
}
 
보시는 것과 같이 버튼을 클릭하였을 때, OnReceiveEvent 를 발생하는 메서드를 호출하여 RadioButtonList 에서 선택된 아이템의 텍스트를 인자 값으로 전달합니다.
 
이제 default.aspx.cs 를 만들어 보겠습니다. 여기의 코드도 무척 심플하네요.
 
Default.aspx.cs
public partial class _Default : System.Web.UI.Page
{
        protected void Page_Load(object sender, EventArgs e)
        {
               this.ucWebUserControl1.ReceiveEvent +=
new ReceiveEventHandler(ucWebUserControl1_ReceiveEvent);
        }
 
        void ucWebUserControl1_ReceiveEvent(object sender, ReceiveEventArgs e)
        {
               string msg     = string.Format("선택된아이템은 {0} 입니다",e.Item);
               lbl.Text       = msg;
        }
}
 
 
결과 화면을 보겠습니다.
[그림2] 실행화면
 
글 만으로 잘 이해가 안되시면 첨부 파일을 다운로드 하여 한번 살펴보시면 좋을 것 같습니다.
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by 땡초 POWERUMC
TAG ,

댓글을 달아 주세요