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 是一種技術,如果您不確定您想要擷取滑鼠的專案是否為 UIElementContentElement ,則此技術很有用。 介面轉換和介面方法呼叫接著會在內部呼叫適當的類型特定 CaptureMouse 實作,而不需要將試用版轉型為 UIElementContentElement 。 這個相同的轉型技術適用于定義的其他成員 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

備註

若要擷取,必須啟用專案。 檢查 是否 IsEnabledtrue 呼叫 CaptureMouse 之前。

如果呼叫 會傳 CaptureMousetrue 回 ,則 IsMouseCaptured 也是 true

如果呼叫 會傳 trueCaptureMouse 回 ,則會 GotMouseCapture 引發 和 IsMouseCapturedChanged 事件,並在 RoutedEventArgs.Source 事件資料中回報為 CaptureMouse 呼叫 方法的專案。 如果您強制擷取,可能會干擾現有的擷取,特別是與滑鼠拖放相關的擷取。

若要清除所有元素的滑鼠擷取,請使用 element 提供的參數 null 呼叫 Mouse.Capture

適用於

另請參閱