ContentElement.CaptureMouse ContentElement.CaptureMouse ContentElement.CaptureMouse ContentElement.CaptureMouse Method

定義

この要素にマウスをキャプチャするように強制することを試みます。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。それ以外の場合は falsetrue 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. を呼び出すIsEnabled true 前に、がであるかどうかをCaptureMouse確認します。Check whether IsEnabled is true before you call CaptureMouse.

を呼びCaptureMouse出すtrueと、 IsMouseCapturedtrueになります。If calling CaptureMouse returns true, then IsMouseCaptured is also true.

を呼びCaptureMouse出すtrue GotMouseCaptureと、イベントとIsMouseCapturedChangedイベントが発生RoutedEventArgs.Sourceし、 CaptureMouseメソッドが呼び出された要素として報告されたイベントデータが返されます。If 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.

すべての要素からマウスキャプチャをクリアするMouse.Captureにはelement 、としnullて指定されたパラメーターを使用してを呼び出します。To clear mouse capture from all elements, call Mouse.Capture with the element parameter provided as null.

適用対象

こちらもご覧ください