2012-10-18 9 views
1

사용자 지정 컨트롤이 들어있는 "도구 설명"을 만들려고합니다. 내가 필요한 것을 수행하는 ToolStripDropDown을 사용하여 구현했습니다. 사용자가 다른 곳을 클릭하거나 다른 창을 활성화 할 때 닫습니다.ToolStripDropDown이 표시된 경우 마우스 메시지 캡처

그러나 부모 컨트롤에서 MouseMove 이벤트를 얻을 수 있기를 바랍니다. ToolStripDropDown이 표시됩니다. 여러 단계 (해당 Opened 이벤트 처리기 등에서 드롭 다운을 표시하기 전에) 부모 컨트롤의 Capture 속성을 설정하려고했지만 항상 즉시 false로 다시 설정됩니다. 부모 컨트롤에서 MouseMove 이벤트를 가져 오는 방법이 있습니까 (반드시 Capture 속성을 사용하지 않아도됩니까?)? 그리고 아니요, 타이머를 사용하고 주기적으로 마우스 위치를 확인하는 것과 같은 추악한 해킹을 고려하고 싶지 않습니다. 당신이 상대를 계산한다 ToolStripDropDown를 들어

private void Form1_MouseMove(object sender, MouseEventArgs e) 
{ 
    lblPosition.Text = e.Location.ToString(); 
} 

private void toolStripDropDownButton2_MouseMove(object sender, MouseEventArgs e) 
{ 
    lblPosition.Text = e.Location.X + toolStripDropDownButton2.Bounds.Location.X + ", " + toolStripDropDownButton2.Bounds.Location.Y + e.Location.Y; 
} 

: 마우스 위치를 항상 알고 싶다면

+0

오른쪽의 드롭 다운 메뉴를 클릭하면 닫힙니다. 창 밖에서 클릭 할 때 이벤트를 얻으려면 약간의 마법이 필요합니다. 그것은 마우스를 캡처해야합니다. 당신은 두 가지 방법 모두 가질 수 없습니다. –

+0

'MouseDown' 이벤트는 필요 없으며'MouseMove' 이벤트 만받을 수 있습니다. 'ToolStripDropDown'이 보이지만 마우스가 바깥에있을 때 어떤 이벤트가 발생합니까? –

+0

드롭 다운 창이 표시됩니다. 마우스를 잡았 기 때문에. –

답변

0

, 당신은, 부모 컨트롤과 ToolStripDropDown 컨트롤 모두에 대해 같은 것을 MouseDown 이벤트를 등록해야 부모와의 위치