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();
}
‘보낸 사람’은 작업 된 (예 : 클릭 된) 개체입니다.
이벤트 인수는 더 복잡한 컨트롤 (예 : 트 리뷰)에 대해 서브 클래 싱되므로 이벤트에 대한 자세한 정보 (예 : 정확히 클릭 한 위치)를 알 수 있습니다.
답변
-
‘보낸 사람’은 일부 제어에 대해 수행하는 작업이있는 개체라고합니다.
-
‘이벤트’는 일부 사용자가 수행하는 동작과 ID가있는 제어에 대한 정보를 가지고 있습니다.