2012-08-07 5 views
2

이 프로그램의 목적은 사용자가 화면의 여러 LED를 선택하여 패널의 여러 LED를 켜도록 허용하는 것입니다. 현재 사용자가 모든 버튼을 개별적으로 클릭해야하는 버튼 배열이 있습니다. 이 어레이는 1536 개의 LED를 보유하고있어 많은 클릭을 발생시킵니다. 나는 사용자가 마우스 버튼을 누르고있을 때 그들이 교차하는 LED를 밝힐 수 있기를 바란다. 내가 뭔가 같은 말하고 싶은 :마우스 이벤트 처리기

buttonArray[row, column].MouseLeave += new System.Windows.Forms.MouseEventHandler(ClickButton); 

을 그리고 다음과 같은 루틴이 : 사용자의 마우스가 버튼 위에 간다 언제든지 트리거

private void ClickButton(Object sender, System.Windows.Forms.MouseEventArgs e) 
{ 
    if (e.Button==MouseButtons.Left) 
    { 
     //blah blah 
    } 
} 

을하고 난 있는지 확인합니다 그들은 버튼을 누르고있었습니다. 지금은이 오류를 얻고있다 : 나는 위임 및 핸들러의 오른쪽 일치가없는 것처럼

Error 1 Cannot implicitly convert type 'System.Windows.Forms.MouseEventHandler' to 'System.EventHandler'.

보인다, 또는 전 C#을 좀 새로운 네임 스페이스 일을 ... 이해 아니에요. 나는 잠시 MSDN을 우연히 발견했는데 마치 저처럼 작동하는 많은 예제를 찾고 있습니다.

+0

페인트 프로그램은 모든 단일 픽셀에 대해 컨트롤을 사용하지 않습니다. 귀하의 프로그램은 뚱뚱한 픽셀을 가진 페인트 프로그램 일뿐입니다. 컨트롤 사용을 중지하면 나머지는 간단합니다. –

+0

마우스 버튼이 눌려져있는 동안 MouseLeave 이벤트가 발생하지 않는다. MouseDown 이벤트를받는 컨트롤은 Button이 realeased 될 때까지 마우스를 캡처합니다. 한스의 제안을 조사해야합니다. –

답변

0

유형 중 하나가 문제입니다. Click 이벤트는 System.EventArgs으로 전달됩니다. System.MouseEventArgs을 사용하려면 MouseClick 이벤트에 바인딩해야합니다.

이 시나리오에서 마우스는 True에 이르기까지 개인 부울 플래그를 설정하고 MouseUp 처리기를 다시 설정하여 False으로 설정하는 MouseDown 처리기를 만듭니다. 그런 다음 MouseEnter 핸들러를 사용하여 플래그가 설정되어 있는지 확인하고 설정되어 있으면 양식의 LED 표시 상태를 전환하거나 설정합니다. 그런 다음이 모든 것을이 세 핸들러에 바인딩 할 수 있으며 제어 공간에 들어갈 때 마우스가 다운되었는지 여부를 알릴 수 있어야합니다.

편집 : 예를 들어 내가 조립 한 예가 내가 상상했던 것처럼 작동하지 않습니다. 그림을 이동.

+0

좋은 생각 ... 그게 작동 할 것 같은데, 네가 떠나기 이벤트를 잘못 사용 했어. 들어가면 훨씬 더 의미가있다. 내 문제의 일부는 내가 아무데도 MouseDown 처리기 또는 적절한 구문을 채찍을 이해하는 방법을 이해할 수 없다는 것입니다. 그리고 나는 여러분이 'bind'에 의해 무엇을 의미하는지 알지 못합니다. 너는 분명히 올바른 페이지에있는 것 같아. 도와 줘서 고마워. – user1583208