UIElement.CaptureMouse メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
この要素にマウスをキャプチャするように強制することを試みます。
public:
virtual bool CaptureMouse();
public bool CaptureMouse ();
abstract member CaptureMouse : unit -> bool
override this.CaptureMouse : unit -> bool
Public Function CaptureMouse () As Boolean
戻り値
マウスが正常にキャプチャされた場合は true
。それ以外の場合は false
。
実装
例
次の例では、マウスをキャプチャ (およびキャプチャ解除) し、3D モデルを表示するための特別なマウス モードを有効にする、マウスとキー入力の組み合わせのハンドラーのペアを実装します。
private void MouseDownHandler(object sender, MouseButtonEventArgs e)
{
if (!Enabled) return;
e.Handled = true;
if (Keyboard.IsKeyDown(Key.F1))
{
Reset();
return;
}
UIElement el = (UIElement)sender;
_point = e.MouseDevice.GetPosition(el);
// Initialize the center of rotation to the lookatpoint
if (!_centered)
{
ProjectionCamera camera = (ProjectionCamera)_slaves[0].Camera;
_center = camera.LookDirection;
_centered = true;
}
_scaling = (e.MiddleButton == MouseButtonState.Pressed);
if (!Keyboard.IsKeyDown(Key.Space))
_rotating = true;
else
_rotating = false;
el.CaptureMouse();
}
private void MouseUpHandler(object sender, MouseButtonEventArgs e)
{
if (!_enabled) return;
e.Handled = true;
// Stuff the current initial + delta into initial so when we next move we
// start at the right place.
if (_rotating)
{
_rotation = _rotationDelta * _rotation;
}
else
{
_translate += _translateDelta;
_translateDelta.X = 0;
_translateDelta.Y = 0;
}
//_scale = _scaleDelta*_scale;
UIElement el = (UIElement)sender;
el.ReleaseMouseCapture();
}
Private Sub MouseDownHandler(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
If Not Enabled Then
Return
End If
e.Handled = True
If Keyboard.IsKeyDown(Key.F1) = True Then
Reset()
Return
End If
Dim el As UIElement = CType(sender, UIElement)
_point = e.MouseDevice.GetPosition(el)
' Initialize the center of rotation to the lookatpoint
If Not _centered Then
Dim camera As ProjectionCamera = CType(_slaves(0).Camera, ProjectionCamera)
_center = camera.LookDirection
_centered = True
End If
_scaling = (e.MiddleButton = MouseButtonState.Pressed)
If Keyboard.IsKeyDown(Key.Space) = False Then
_rotating = True
Else
_rotating = False
End If
el.CaptureMouse()
End Sub
Private Sub MouseUpHandler(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
If Not _enabled Then
Return
End If
e.Handled = True
' Stuff the current initial + delta into initial so when we next move we
' start at the right place.
If _rotating = True Then
_rotation = _rotationDelta * _rotation
Else
_translate += _translateDelta
_translateDelta.X = 0
_translateDelta.Y = 0
End If
'_scale = _scaleDelta * _scale
Dim el As UIElement = CType(sender, UIElement)
el.ReleaseMouseCapture()
End Sub
注釈
キャプチャするには、要素を有効にする必要があります。 を呼び出すCaptureMouse前に、 true
が かどうかをIsEnabled確認します。
を呼び出すと CaptureMouse が返されるtrue
IsMouseCaptured場合、 も true
になります。
を呼び出すとCaptureMousetrue
、 イベントと IsMouseCapturedChanged イベントが発生RoutedEventArgs.SourceしますGotMouseCapture。イベント データでは、 メソッドがCaptureMouse呼び出される要素として報告されます。 キャプチャを強制すると、既存のキャプチャ (特にマウスによるドラッグ アンド ドロップに関連するキャプチャ) に干渉する可能性があります。
すべての要素からマウス キャプチャをクリアするには、 パラメーターを としてnull
指定して をelement
呼び出しますMouse.Capture。
適用対象
こちらもご覧ください
.NET