[.net] .NET 이벤트-개체 발신자 및 EventArgs e 란 무엇입니까?

sender 및 eventArgs는 무엇을 의미 / 참조합니까? 그것들을 어떻게 사용할 수 있습니까 (아래 시나리오의 경우)?

대본:

삭제 기능이있는 사용자 지정 컨트롤을 만들려고하는데 동일한 사용자 지정 컨트롤이 많이 포함 된 페이지에서 클릭 한 컨트롤을 삭제할 수 있기를 원합니다.



답변

보낸 사람은 작업이 수행되는 컨트롤입니다 (예 : OnClick, 버튼).

EventArgs는이 이벤트의 구현자가 유용하다고 생각할 수있는 인수입니다. OnClick을 사용하면 좋은 것이 없지만 GridView ‘SelectedIndexChanged’와 같은 일부 이벤트에서는 새 인덱스 또는 기타 유용한 데이터가 포함됩니다.

Chris가 말하는 것은 다음과 같이 할 수 있다는 것입니다.

protected void someButton_Click (object sender, EventArgs ea)
{
    Button someButton = sender as Button;
    if(someButton != null)
    {
        someButton.Text = "I was clicked!";
    }
}


답변

sender이벤트 핸들러를 실행 한 이벤트를 호출 한 개체를 나타냅니다. 동일한 이벤트 핸들러를 사용하는 객체가 많은 경우 유용합니다.

EventArgs더미 기본 클래스입니다. 그 자체로는 다소 쓸모가 없지만 그로부터 파생 된 경우 이벤트 처리기에 전달해야하는 데이터를 추가 할 수 있습니다.

당신이 당신의 자신의 이벤트를 구현할 때, 사용 EventHandler또는 EventHandler<T>자신의 유형으로합니다. 이렇게하면 모든 이벤트에 대해이 두 가지 매개 변수를 정확히 갖게됩니다 (좋은 점입니다).


답변

보낸 사람을 사용자 지정 컨트롤 유형으로 수동 캐스팅 한 다음이를 사용하여 삭제하거나 비활성화합니다. 예를 들면 다음과 같습니다.

private void myCustomControl_Click(object sender, EventArgs e)
{
  ((MyCustomControl)sender).DoWhatever();
}

‘보낸 사람’은 작업 된 (예 : 클릭 된) 개체입니다.

이벤트 인수는 더 복잡한 컨트롤 (예 : 트 리뷰)에 대해 서브 클래 싱되므로 이벤트에 대한 자세한 정보 (예 : 정확히 클릭 한 위치)를 알 수 있습니다.


답변

  1. ‘보낸 사람’은 일부 제어에 대해 수행하는 작업이있는 개체라고합니다.

  2. ‘이벤트’는 일부 사용자가 수행하는 동작과 ID가있는 제어에 대한 정보를 가지고 있습니다.


답변

참고로, sender그리고 eASP.NET 또는 C #을 특정하지 않습니다. 이벤트 (C # 프로그래밍 가이드)Visual Basic의 이벤트를 참조하세요 .


답변