ContentElement.CaptureMouse Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Próbuje wymusić przechwycenie myszy do tego elementu.
public:
virtual bool CaptureMouse();
public bool CaptureMouse ();
abstract member CaptureMouse : unit -> bool
override this.CaptureMouse : unit -> bool
Public Function CaptureMouse () As Boolean
Zwraca
true
jeśli mysz zostanie pomyślnie przechwycona; w przeciwnym razie , false
.
Implementuje
Przykłady
Poniższy przykład przechwytuje wskaźnik myszy lub zwalnia przechwytywanie na podstawie tego, czy mysz jest już przechwytywana przez element. Zwróć uwagę, że ten przykład rzutuje potencjalny element docelowy przechwytywania na IInputElement interfejs i dlatego początkowo wywołuje metodę IInputElement.CaptureMouse . Rzutowanie do IInputElement jest techniką, która jest przydatna, jeśli nie masz pewności, czy element, który chcesz przechwycić myszą UIElement , jest lub ContentElement. Rzutowanie interfejsu i wywołanie metody interfejsu wywołuje następnie odpowiednią implementację CaptureMouse specyficzną dla typu wewnętrznie bez konieczności rzutowania próbnego do metody UIElement lub ContentElement. Ta sama technika rzutowania działa dla innych elementów członkowskich, które IInputElement definiują, na przykład wiele zdarzeń związanych z danymi wejściowymi i inne metody związane z danymi wejściowymi.
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
Uwagi
Aby można je było przechwycić, należy włączyć element. Sprawdź, czy IsEnabled przed true
wywołaniem metody jest .CaptureMouse
Jeśli wywołanie CaptureMouse zwraca true
wartość , IsMouseCaptured jest również true
wartością .
Jeśli wywołanie CaptureMouse zwraca true
wartość , są GotMouseCapture wywoływane zdarzenia i IsMouseCapturedChanged z RoutedEventArgs.Source danymi zdarzenia zgłoszonymi jako element, w którym jest wywoływana CaptureMouse metoda. Jeśli wymusisz przechwytywanie, możesz zakłócać istniejące przechwytywanie — szczególnie w przypadku przechwytywania odnoszącego się do przeciągania i upuszczania myszą.
Aby wyczyścić przechwytywanie myszy ze wszystkich elementów, wywołaj metodę Mouse.Capture z parametrem element
podanym jako null
.