ContentElement.CaptureMouse 메서드

정의

이 요소에 마우스 캡처를 강제 하려고 합니다.Attempts to force capture of the mouse to this element.

public:
 virtual bool CaptureMouse();
public bool CaptureMouse ();
abstract member CaptureMouse : unit -> bool
override this.CaptureMouse : unit -> bool
Public Function CaptureMouse () As Boolean

반환

마우스가 캡처되면 true이고, 그렇지 않으면 false입니다.true if the mouse is successfully captured; otherwise, false.

구현

예제

다음 예제에서는 마우스를 캡처하거나 마우스가 요소에 의해 이미 캡처되어 여부에 따라 캡처를 해제 합니다.The following example captures the mouse or releases capture, based on whether the mouse is already captured by the element. 이 예제에서는 예상 캡처 대상 요소를 IInputElement 인터페이스로 캐스팅 하므로 처음에는 IInputElement.CaptureMouse 메서드를 호출 합니다.Note that this example casts the prospective capture target element to the IInputElement interface, and is thus initially calling the IInputElement.CaptureMouse method. IInputElement로 캐스팅 하는 것은 마우스를 캡처할 요소가 UIElement 인지 또는 ContentElement인지 확실 하지 않은 경우에 유용 하 게 사용할 수 있는 기술입니다.Casting to IInputElement is a technique that is useful if you are unsure whether the element you want to have capture the mouse is a UIElement or a ContentElement. 그런 다음 인터페이스 캐스트와 인터페이스 메서드 호출은 UIElement 또는 ContentElement에 대 한 평가판 캐스트를 요구 하지 않고 내부적으로 적절 한 형식별 CaptureMouse 구현을 호출 합니다.The interface cast and the interface method call then calls the appropriate type-specific CaptureMouse implementation internally without requiring a trial cast to either UIElement or ContentElement. 이 동일한 캐스팅 기술은 IInputElement에서 정의 하는 다른 멤버, 많은 입력 관련 이벤트 및 기타 입력 관련 메서드에 적용 됩니다.This same casting technique works for other members that IInputElement defines, for instance many of the input-related events, and other input-related methods.

private void CaptureMouseCommandExecuted(object sender, ExecutedRoutedEventArgs e)
{
  MessageBox.Show("Mouse Command");
  IInputElement target = Mouse.DirectlyOver;

  target = target as Control;
  if (target != null)
  {
    if (!target.IsMouseCaptured)
    {
      Mouse.Capture(target);
    } else {
      Mouse.Capture(null);
    }
  }
}
Private Sub CaptureMouseCommandExecuted(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
  MessageBox.Show("Mouse Command")
  Dim target As IInputElement = Mouse.DirectlyOver

  target = TryCast(target, Control)
  If target IsNot Nothing Then
    If Not target.IsMouseCaptured Then
      Mouse.Capture(target)
    Else
      Mouse.Capture(Nothing)
    End If
  End If
End Sub

설명

를 캡처할 요소 활성화 되어야 합니다.To be captured, an element must be enabled. CaptureMouse를 호출 하기 전에 IsEnabled true 인지 여부를 확인 합니다.Check whether IsEnabled is true before you call CaptureMouse.

CaptureMouse를 호출 하 여 true반환 하는 경우 IsMouseCapturedtrue됩니다.If calling CaptureMouse returns true, then IsMouseCaptured is also true.

CaptureMouse를 호출 하 여 true반환 하는 경우 GotMouseCaptureIsMouseCapturedChanged 이벤트가 발생 하 고 이벤트 데이터가 RoutedEventArgs.Source 메서드가 호출 된 요소로 보고 됩니다.CaptureMouseIf calling CaptureMouse returns true, then the GotMouseCapture and IsMouseCapturedChanged events are raised, with RoutedEventArgs.Source in the event data reported as the element where the CaptureMouse method is called. 강제로 캡처하는 경우 기존 캡처 (특히 마우스를 사용 하 여 끌어서 놓기와 관련 된 캡처)를 방해할 수 있습니다.If you force capture, you might interfere with existing captures - especially with captures that relate to drag-and-drop with the mouse.

모든 요소에서 마우스 캡처를 지우려면 null으로 제공 된 element 매개 변수를 사용 하 여 Mouse.Capture를 호출 합니다.To clear mouse capture from all elements, call Mouse.Capture with the element parameter provided as null.

적용 대상

추가 정보