어떤 상황에서도이 작업을 수행 할 수 있습니까?소유 클래스 외부에서 C# 이벤트를 호출합니까?
나의 현재 상황이 있습니다 :
internal enum GUIElementHandlers { Click, ... }
internal void CustomGUIElement::CallHandler(GUIElementHandler h, object[] args) {
switch (h) {
case Click:
this.Click(this, (EventArgs)args[0]);
break;
... // etc and so forth
}
}
그것은 무섭게 추한 kludge하지만 그것은 ...이 수행해야 작동합니다 : 내 첫번째 생각은 유사한 기능을 가지고 있었다
public class CustomForm : Form
{
public class CustomGUIElement
{
...
public event MouseEventHandler Click;
// etc, and so forth.
...
}
private List<CustomGUIElement> _elements;
...
public void CustomForm_Click(object sender, MouseEventArgs e)
{
// we might want to call one of the _elements[n].Click in here
// but we can't because we aren't in the same class.
}
}
그래도 더 우아한 솔루션이 될까요? .NET 라이브러리는 메시지 처리기와 Control의 호출 이벤트로 항상 이것을 수행합니다. 다른 사람이 다른 어떤 아이디어가 있습니까?
나는 그가 사건 수업 외부에서 사건을 제기하는 것을 고려한다고 생각하니? –
Events 클래스 외부에서 PerformClick()을 호출합니다. –
아니요, 이것은 제가하고 싶은 스타일입니다. 즉. 이벤트 클래스 외부에서 이벤트를 호출합니다. 방법을 피할 수있는 방법이 있기를 바랬습니다. 내가 게시 한 내부 솔루션과 함께 갈 것이라고 가정합니다.이 사용자 지정 양식은 DLL에 있으므로 내부 항목은 숨겨집니다. –