この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

UIElement.CaptureMouse メソッド ()

 

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

名前空間:   System.Windows
アセンブリ:  PresentationCore (PresentationCore.dll 内)

public bool CaptureMouse()

戻り値

Type: System.Boolean

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

要素をキャプチャするには、要素が有効になっている必要があります。 CaptureMouse を呼び出す前に、IsEnabledtrue になっていることを確認してください。

CaptureMouse を呼び出したときに true が返された場合は、IsMouseCapturedtrue です。

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

すべての要素からマウスのキャプチャを消去するには、element パラメーターを null に指定して Mouse.Capture を呼び出します。

マウスとキーによる入力の組み合わせを処理する一組のハンドラーを実装する例を次に示します。これらのハンドラーは、マウスをキャプチャ (およびキャプチャ解除) し、3D モデルを表示する特別なマウス モードを有効にします。

private void MouseDownHandler(object sender, MouseButtonEventArgs e)
{
    if (!Enabled) return;
    e.Handled = true;


    if (Keyboard.IsKeyDown(Key.F1) == true)
    {
        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) == false)
        _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 == true)
        _rotation = _rotationDelta * _rotation;
    else
    {
        _translate += _translateDelta;
        _translateDelta.X = 0;
        _translateDelta.Y = 0;
    }

    //_scale = _scaleDelta*_scale;
    UIElement el = (UIElement)sender;
    el.ReleaseMouseCapture();
}

.NET Framework
3.0 から利用可能
Silverlight
2.0 から利用可能
Windows Phone Silverlight
7.0 から利用可能
トップに戻る
表示: