2013-07-03 5 views
0

내 코드에 메서드가 있습니다. 이름은 bindingSource_PositionChanged입니다. 그것의 정의는 다음과 같습니다nullptr을 객체^또는 EventArgs에 전달해야 할 때? EventArgs :: Empty를 EventArgs에 전달하는 이유는 무엇입니까? ^?

private: System::Void bindingSource_PositionChanged(**System::Object^ sender, System::EventArgs^ e**) 
{ 
    toolStripStatusLabel->Text = String::Format("Datensatz {0:N0} von {1:N0}", bindingSource->Position + 1, bindingSource->Count); 
} 

내 질문 :이 방법으로 함수를 호출 내 프로그램이

  1. :

    bindingSource_PositionChanged(nullptr, System::EventArgs::Empty); 
    

    내 질문 1 : 무엇을 통과한다 이 함수의 e 매개 변수에 System::EventArgs::Empty? 또는 System::EventArgs^으로 변경하십시오. 무엇이 nullptr을 매개 변수 발신자에게 건네 주는가? 또는 System::Object^ 발신자에게 보내시겠습니까?

    bindingSource_PositionChanged(nullptr, nullptr); 
    

    질문 2 : 나는 다른 방법으로 함수를 호출 내 프로그램이

  2. 은 무엇을이 함수의 매개 변수 전자에 nullptr한다? 또는 유형 System::EventArgs^?

+1

이 C#입니까? 전에 구문에서^문자를 보지 못했습니다. 편집 : 또는'toolStipStatusLabel-> Text' –

+1

이것은 C++/CLI입니다. C#이 아닙니다. –

+0

그것은 C++/ClI입니다. 하지만 난 질문이 C#에서 동일하게 생각합니다. nullptr을 변수 system.EventArgs에 전달하는 것은 무엇을 의미합니까? 그리고이 변수를 System.Object.sender 변수에 전달하는 것은 무엇을 의미합니까? 및 System.EventArgs.Empty를 system.EventArgs 변수에 전달하는 것은 무엇을 의미합니까? –

답변

3

의 매개 변수에이 중요 할 경우 이벤트의 가입자 (들)이 그 값으로 뭔가를하고가 null 것으로 예상 경우에만 가능합니다. 일반적으로 sender은 이벤트에 가장 많은 책임이있는 객체입니다 (실제로는 항상 그렇지는 않지만 항상 에 구독 된 객체 인에 가입). EventArgs은 그 자체로 흥미로운 정보를 전달하지 않으므로 발신자가 정보를 확인하지 않을 수도 있습니다. 더 흥미로운 이벤트의 경우 가입자가 args에서 일부 정보에 액세스하는 것이 일반적입니다. 따라서 null 인 경우 이는 종종 실패합니다. EventArgs::Empty은 매번 새롭지 만 관심이없는 EventArgs 인스턴스를 만들 필요가 없습니다. 정보가 없기 때문에 EventArgs을 사용하는 모든 이벤트는 동일한 인스턴스를 사용할 수 있습니다.

당신 sender 또는 args 중 하나에 대한 null을 보낼 수 있습니다; 그것이 어떤 핸들러가 당신을 사랑하지 못하게하는 것이라면 놀랄 필요가 없습니다. 논리적 인 발신자와 (더 흥미로운 것이 없을 경우) EventArgs::Empty을 보내려면 이 바람직하고이 될 것입니다.

+0

고맙습니다 만이 함수에서 nullptr을 전달하거나 EventArgs :: Empty를 전달할 이유가 없습니다. 보낸 사람과 EventArg가이 기능을 수행하는 것이 중요하지 않은 것을 알고 있습니까? 그게 맞습니까? 다시 한 번 감사드립니다. –

+2

@joniklaoud 이벤트 전체가 호출자와 가입자를 구분하는 것입니다. 호출자는 "중요하지 않음"과 같은 것을 말할 수 없습니다 - 처리기는 (예를 들어) 하나의 공통 "클릭"처리기를 사용하고 "보낸 사람"을 사용하여 * 무엇이 클릭되었는지 알아 내려고합니다. 따라서 수행 할 작업 - UI가 런타임에 동적으로 작성되는 경우 일반적인 방법.그리고 다른 비 UI 예제와 비슷합니다. –