Partilhar via


ITransformProvider.Move(Double, Double) Método

Definição

Move o controle.

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)

Parâmetros

x
Double

Coordenadas da tela absolutas do lado esquerdo do controle.

y
Double

Coordenadas da tela absolutas da parte superior do controle.

Exceções

Se a propriedade CanMove é false.

Exemplos

O exemplo a seguir mostra uma possível implementação desse método para um controle personalizado que pode ser movido.

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

Comentários

Um objeto não pode ser movido, redimensionado ou girado de modo que seu local de tela resultante esteja completamente fora das coordenadas de seu contêiner e inacessível para teclado ou mouse. Por exemplo, quando uma janela de nível superior é movida completamente fora da tela ou um objeto filho é movido para fora dos limites do visor do contêiner. Nesses casos, o objeto é colocado o mais próximo possível das coordenadas de tela solicitadas com as coordenadas superior ou esquerda substituídas para estar dentro dos limites do contêiner.

Aplica-se a

Confira também