2012-12-19 2 views
0

라디오 버튼 컨트롤의 클릭에 반응하려고합니다. 런타임에 EventArgs 변수는이 이미지에 표시된 EventArgs 유형의 기본 클래스가있는 MouseEventArgs 유형의 요소를 표시합니다. 캐스팅없이 사용할 수있는 유일한 방법은 등호, getHashCode, getType로하고 ToString 때문에 내가 편집을 허용하는 MouseEventArgs 형식으로있는 EventArgs를 주조하고있어 어디 EventArgs 클래스 내에서 MouseEventArgs 클래스에 어떻게 액세스합니까?

enter image description here

빨간색 화살표

을 보여줍니다. 한 노트, 저는 디자이너가 아니라 수동으로이 컨트롤을 만들고 있습니다.

그러나 계속 진행하면 다음과 같은 오류가 발생합니다.

enter image description here

내가 오류를 이해하지만 난 그게 'EventArgs입니다'때문에 컴파일에 도착하는 방법을 알아낼 수없는 오전 클릭 방법에 액세스 할 수 없습니다.

모든 도움을 주셔서 감사합니다.

+0

_Click_ 또는 _MouseClick_을 처리하고 있습니까? –

+0

e.GetType(). FullName 및 typeof (MouseEventArgs) .FullName은 디버거에서 동일합니까? –

+0

MouseEventArgs 클래스를 올바르게 참조하고 있습니까? http://msdn.microsoft.com/en-us/library/system.windows.forms.mouseeventargs.aspx vs http://msdn.microsoft.com/en-us/library/system.windows.input.mouseeventargs. aspx. – fsimonazzi

답변

1

MouseEventArgs 유형의 이벤트 처리기의 두 번째 매개 변수를 지정하기 만하면됩니다. 이처럼 :

private static void AutoMan_RadBut_Click(object sender, MouseEventArgs e) 

그런 식으로, 당신은 메서드 내에서 인수를 캐스팅 할 필요가 없습니다.

+0

위임자가 실제로 'MouseEventArgs'를 정의하는 경우 왜 캐스트가 실패하는지 설명하지 않습니다. – Servy

+0

당신은 절대적으로 옳습니다. 그러나 문제에 대해 대답하지 않은 상태로 남아있는 충분한 질문 (위의 설명 참조)이 있습니다.이 대답을 통해 실제 무엇이 실제로 진행되고 있는지 파악할 수 있습니다. –

+0

문제를 진단하는 기술은 대답이 아닌 주석에 더 적합합니다. – Servy

0

답장을 보내 주셔서 감사합니다.

마지막 해결책은 아담의 대답의 일부를 사용했습니다. EventArgs를 MouseEventArgs로 변경해야했지만 그 자체로 오류가 발생했습니다. 전체 솔루션은 옳은 길을 나에게 퍼팅

new MouseEventHandler(AutoMan_RadBut_Click) 

덕분에 아담에게

new EventHandler(AutoMan_RadBut_Click); 

을 변경 포함되어 있습니다.

P. 난 아직도 'e'가 런타임에 MouseEventArgs 하위 클래스를 갖고 있는지 알지 못하지만 컴파일 타임에 액세스 할 수 없습니다.

관련 문제