ITransformProvider.Move(Double, Double) Methode

Definitie

Hiermee verplaatst u het besturingselement.

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 schermcoördinaten van de linkerkant van het besturingselement.

y
Double

Absolute schermcoördinaten van de bovenkant van het besturingselement.

Uitzonderingen

Als de CanMove eigenschap onwaar is.

Voorbeelden

In het volgende voorbeeld ziet u een mogelijke implementatie van deze methode voor een aangepast besturingselement dat kan worden verplaatst.

/// <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

Opmerkingen

Een object kan niet zodanig worden verplaatst, aangepast of gedraaid dat de resulterende schermlocatie volledig buiten de coördinaten van de container valt en niet toegankelijk is voor het toetsenbord of de muis. Wanneer een venster op het hoogste niveau bijvoorbeeld volledig buiten het scherm wordt verplaatst of een onderliggend object buiten de grenzen van de viewport van de container wordt verplaatst. In deze gevallen wordt het object zo dicht mogelijk bij de aangevraagde schermcoördinaten geplaatst, waarbij de coördinaten boven of links worden overschreven om binnen de containergrenzen te vallen.

Van toepassing op

Zie ook