ContentElement.CaptureMouse Method (System.Windows)

Switch View :
ScriptFree
.NET Framework Class Library
ContentElement.CaptureMouse Method

Attempts to force capture of the mouse to this element.

Namespace:  System.Windows
Assembly:  PresentationCore (in PresentationCore.dll)
Syntax

Visual Basic
Public Function CaptureMouse As Boolean
C#
public bool CaptureMouse()
Visual C++
public:
virtual bool CaptureMouse() sealed
F#
abstract CaptureMouse : unit -> bool 
override CaptureMouse : unit -> bool 

Return Value

Type: System.Boolean
true if the mouse is successfully captured; otherwise, false.

Implements

IInputElement.CaptureMouse()
Remarks

To be captured, an element must be enabled. Check whether IsEnabled is true before you call CaptureMouse.

If calling CaptureMouse returns true, then IsMouseCaptured is also true.

If calling CaptureMouse returns true, then the GotMouseCapture and IsMouseCapturedChanged events are raised, with RoutedEventArgs.Source in the event data reported as the element where the CaptureMouse method is called. If you force capture, you might interfere with existing captures—especially with captures that relate to drag-and-drop with the mouse.

To clear mouse capture from all elements, call Mouse.Capture with the element parameter provided as null.

Examples

The following example captures the mouse or releases capture, based on whether the mouse is already captured by the element. Note that this example casts the prospective capture target element to the IInputElement interface, and is thus initially calling the IInputElement.CaptureMouse method. Casting to IInputElement is a technique that is useful if you are unsure whether the element you want to have capture the mouse is a UIElement or a ContentElement. The interface cast and the interface method call then calls the appropriate type-specific CaptureMouse implementation internally without requiring a trial cast to either UIElement or ContentElement. This same casting technique works for other members that IInputElement defines, for instance many of the input-related events, and other input-related methods.

Visual Basic

	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


C#

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);
    }
  }
}


Version Information

.NET Framework

Supported in: 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Platforms

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
See Also

Reference

Other Resources