次の方法で共有


ContentElement.CaptureMouse メソッド

定義

この要素にマウスをキャプチャするように強制することを試みます。

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

戻り値

マウスが正常にキャプチャされた場合は true。それ以外の場合は false

実装

次の例では、 要素によってマウスが既にキャプチャされているかどうかに基づいて、マウスまたはリリース キャプチャをキャプチャします。 この例では、将来のキャプチャ ターゲット要素を インターフェイスに IInputElement キャストするため、 メソッドを最初に呼び出 IInputElement.CaptureMouse すことに注意してください。 への IInputElement キャストは、マウス UIElement をキャプチャする要素が であるか、 であるかがわからない場合に役立つ手法です ContentElement。 その後、インターフェイス キャストとインターフェイス メソッド呼び出しは、または ContentElementへのUIElement試用版キャストを必要とせずに、適切な型固有の CaptureMouse 実装を内部的に呼び出します。 この同じキャスト手法は、多くの入力関連イベントや他の入力関連のメソッドなど、定義する他のメンバー IInputElement に対して機能します。

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

注釈

キャプチャするには、要素を有効にする必要があります。 を呼び出すCaptureMouse前に が true であるかどうかをIsEnabled確認します。

を呼び出すと CaptureMouse が返されるtrueIsMouseCaptured場合は、 も trueになります。

を呼び出すとCaptureMousetrue、 イベントと IsMouseCapturedChanged イベントが発生しGotMouseCaptureRoutedEventArgs.Sourceイベント データは メソッドがCaptureMouse呼び出される要素として報告されます。 キャプチャを強制すると、既存のキャプチャ (特にマウスによるドラッグ アンド ドロップに関連するキャプチャ) に干渉する可能性があります。

すべての要素からマウス キャプチャをクリアするには、 としてnull指定された パラメーターを使用して をelement呼び出しますMouse.Capture

適用対象

こちらもご覧ください