2009-07-15 2 views
0

C#, Visual Studio 2005의 폼에 단추를 놓고 MouseHover 또는 MouseDown과 같은 단추 이벤트에 의해 트리거되는 동작이있을 때 이벤트가 단일 마우스를 계속 올려 놓거나 왼쪽 버튼을 계속 누르고있을지라도 액션을 정의하는 함수를 호출하십시오. 이 경우 그래픽 객체를 회전 또는 변환하여 이동하려고합니다. 변환 기능을 반복적으로 호출하려면 마우스를 계속 클릭하고 싶을뿐입니다. 마우스를 계속 올려 놓거나 버튼을 누르고 있습니다. 내 행동을 중단 할 때까지 행동을 유지하는 것은 무엇입니까?Windows Form 마우스 이벤트 중 연속 동작 만들기

답변

0

MouseEnter에 플래그를 설정하고 플래그가 true 인 동안 작업을 계속 수행하십시오. MouseLeave에서 플래그를 false로 설정하십시오.

+0

는 다음 코드와 상기 시도) { more = true; // while (more == true) if (more == true) { c1Chart3D1.ChartArea.View.ViewportScale * = ZoomMultiple; } } // MOUSEENTER_ZOOMIN() // ------------------------------------- 개인 무효 MouseLeave_Stop (개체 발신자, EventArgs 전자) { more = false; } MouseLeave 이벤트가 while 루프를 죽이기를 바랬지 만 그렇게하지는 않았습니다. – user32848

0

귀하의 경우에는 MouseDown, MouseMove 및 MouseUp 이벤트 조합을 사용해야합니다. 여기

작은 간단한 예

시작할 :

private void OnMouseDown(object sender, EventArgs e) 
{ 
    //hit test to check if the mouse pointer is on a graphical object 
    _myHitObject = the_selected_object 
} 

private void OnMouseMove(object sender, EventArgs e) 
{ 
    if(_myHitObject != null) 
     //do your action relative to the mouse movements. 
} 

private void OnMouseUp(object sender, EventArgs e) 
{ 
    _myHitObject = null; 
} 
0

용액 MouseLeave 이벤트가 주목하고 클래스 변수되도록 허용 DoEvents()를 사용하는 "추가"로 변경된다 :

개인 무효 MouseEnter_ZoomIn (객체 송신자있는 EventArgs E)

{

more = true; 

while (more == true) 

{ 
    c1Chart3D1.ChartArea.View.ViewportScale *= ZoomMultiple; 
    Application.DoEvents(); 

} 

} // MOUSEENTER_ZOOMIN()

// ------------------------------------- 개인 무효 MouseEnter_ZoomIn (객체 송신자있는 EventArgs E :

개인 무효 MouseLeave_Stop (객체 송신자있는 EventArgs E)

{

more = false; 

}