Linguagem

ITransformProvider.Resize(Double, Double) Método

Definição

Redimensiona o controlo.

public:
 void Resize(double width, double height);
public void Resize(double width, double height);
abstract member Resize : double * double -> unit
Public Sub Resize (width As Double, height As Double)

Parâmetros

width
Double

A nova largura da janela, em píxeis.

height
Double

A nova altura da janela, em pixels.

Exceções

Se a CanResize propriedade for falsa.

Exemplos

O exemplo seguinte mostra uma possível implementação deste método para um controlo personalizado que pode ser redimensionado.

/// <summary>
/// Resizes the provider to the specified height and width.
/// </summary>
/// <param name="height">The specified height.</param>
/// <param name="width">The specified width.</param>
void ITransformProvider.Resize(double width, double height)
{
    if (!((ITransformProvider)this).CanResize)
        throw new InvalidOperationException("Operation cannot be performed.");

    if (width <= 0 | height <= 0)
        throw new InvalidOperationException("Operation cannot be performed.");

    int widthInt = (int)width;
    int heightInt = (int)height;

    // Resize 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.
    Size MaxSize =
        new Size(this.customControl.formWidth - 20,
        this.customControl.formHeight - 20);
    Size MinSize = new Size(10, 10);

    if (widthInt > MaxSize.Width)
        widthInt = MaxSize.Width;
    if (heightInt > MaxSize.Height)
        heightInt = MaxSize.Height;
    if (widthInt < MinSize.Width)
        widthInt = MinSize.Width;
    if (heightInt < MinSize.Height)
        heightInt = MinSize.Height;

    // Invoke control method on separate thread to avoid clashing with UI.
    // Use anonymous method for simplicity.
    this.customControl.Invoke(new MethodInvoker(delegate ()
    {
        this.customControl.Size = new Size(widthInt, heightInt);
    }));
}
''' <summary>
''' Resizes the provider to the specified height and width.
''' </summary>
''' <param name="height">The specified height.</param>
''' <param name="width">The specified width.</param>
Private Sub Resize(ByVal width As Double, ByVal height As Double) Implements ITransformProvider.Resize
    If Not(CType(Me, ITransformProvider)).CanResize Then
        Throw New InvalidOperationException("Operation cannot be performed.")
    End If

    If width <= 0 Or height <= 0 Then
        Throw New InvalidOperationException("Operation cannot be performed.")
    End If

    Dim widthInt As Integer = CInt(width)
    Dim heightInt As Integer = CInt(height)

    ' Resize 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 MaxSize As New Size(Me.customControl.formWidth - 20, Me.customControl.formHeight - 20)
    Dim MinSize As New Size(10, 10)

    If widthInt > MaxSize.Width Then
        widthInt = MaxSize.Width
    End If
    If heightInt > MaxSize.Height Then
        heightInt = MaxSize.Height
    End If
    If widthInt < MinSize.Width Then
        widthInt = MinSize.Width
    End If
    If heightInt < MinSize.Height Then
        heightInt = MinSize.Height
    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.Size = New Size(widthInt, heightInt)))
End Sub

Observações

Quando chamado a um controlo que suporta vidros divididos, este método pode ter o efeito secundário de redimensionar outros painéis contíguos.

Um objeto não pode ser movido, redimensionado ou rodado de modo a que a sua localização resultante no ecrã fique completamente fora das coordenadas do seu contentor e inacessível ao teclado ou rato. Por exemplo, quando uma janela de nível superior é movida completamente para fora do ecrã ou um objeto filho é movido para fora dos limites da janela de visualização do contentor. Nestes casos, o objeto é colocado o mais próximo possível das coordenadas do ecrã solicitadas, com as coordenadas superior ou esquerda sobrepostas para ficarem dentro dos limites do contentor.

Aplica-se a

Ver também