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。それ以外の場合は 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. CaptureMouseを呼び出す前に IsEnabledtrue かどうかを確認します。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.

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

適用対象

こちらもご覧ください