Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

ITransformProvider.Move(Double, Double) Method

Definition

Namespace:
System.Windows.Automation.Provider
Assembly:
UIAutomationProvider.dll

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Moves the control.

public:
 void Move(double x, double y);
public void Move(double x, double y);
abstract member Move : double * double -> unit
Public Sub Move (x As Double, y As Double)

Parameters

x
Double

Absolute screen coordinates of the left side of the control.

y
Double

Absolute screen coordinates of the top of the control.

Exceptions

If the CanMove property is false.

Examples

The following example shows one possible implementation of this method for a custom control that can be moved.

/// <summary>
/// Moves the provider to the specified position.
/// </summary>
/// <param name="x">The specified X screen coordinate.</param>
/// <param name="y">The specified Y screen coordinate</param>
void ITransformProvider.Move(double x, double y)
{
 int leftInt = (int)x;
 int topInt = (int)y;

 if (!((ITransformProvider)this).CanMove)
 throw new InvalidOperationException(
 "Operation cannot be performed.");

 // Move should never be allowed to place a control outside the 
 // bounds of its container; the control should always be accessible 
 // using the keyboard or mouse.
 // Use the bounds of the parent window to limit the placement 
 // of the custom control.
 int maxLeft = 10;
 int maxTop = 10;
 int maxRight =
 this.customControl.formWidth - this.customControl.Width - 10;
 int maxBottom =
 this.customControl.formHeight - this.customControl.Height - 10;

 if (leftInt < maxLeft)
 leftInt = 0;
 if (topInt < maxTop)
 topInt = 0;
 if (leftInt > maxRight)
 leftInt = maxRight;
 if (topInt > maxBottom)
 topInt = maxBottom;

 // Invoke control method on separate thread to avoid clashing with UI.
 // Use anonymous method for simplicity.
 this.customControl.Invoke(new MethodInvoker(delegate ()
 {
 this.customControl.Left = leftInt;
 this.customControl.Top = topInt;
 }));
}
''' <summary>
''' Moves the provider to the specified position.
''' </summary>
''' <param name="x">The specified X screen coordinate.</param>
''' <param name="y">The specified Y screen coordinate</param>
Private Sub Move(ByVal x As Double, ByVal y As Double) Implements ITransformProvider.Move
 Dim leftInt As Integer = CInt(x)
 Dim topInt As Integer = CInt(y)

 If Not(CType(Me, ITransformProvider)).CanMove Then
 Throw New InvalidOperationException("Operation cannot be performed.")
 End If

 ' Move should never be allowed to place a control outside the 
 ' bounds of its container; the control should always be accessible 
 ' using the keyboard or mouse.
 ' Use the bounds of the parent window to limit the placement 
 ' of the custom control.
 Dim maxLeft As Integer = 10
 Dim maxTop As Integer = 10
 Dim maxRight As Integer = Me.customControl.formWidth - Me.customControl.Width - 10
 Dim maxBottom As Integer = Me.customControl.formHeight - Me.customControl.Height - 10

 If leftInt < maxLeft Then
 leftInt = 0
 End If
 If topInt < maxTop Then
 topInt = 0
 End If
 If leftInt > maxRight Then
 leftInt = maxRight
 End If
 If topInt > maxBottom Then
 topInt = maxBottom
 End If

 ' Invoke control method on separate thread to avoid clashing with UI.
 ' Use anonymous method for simplicity.
 Me.customControl.Invoke(New MethodInvoker(Sub()
 Me.customControl.Left = leftInt
 Me.customControl.Top = topInt
 End Sub))
End Sub

Remarks

An object cannot be moved, resized, or rotated such that its resulting screen location would be completely outside the coordinates of its container and inaccessible to keyboard or mouse. For example, when a top-level window is moved completely off-screen or a child object is moved outside the boundaries of the container's viewport. In these cases the object is placed as close to the requested screen coordinates as possible with the top or left coordinates overridden to be within the container boundaries.

Applies to

See also


Feedback

Was this page helpful?