ITransformProvider.Resize(Double, Double) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Redimensiona o controle.
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 pixels.
- height
- Double
A nova altura da janela, em pixels.
Exceções
Se a propriedade CanResize é false.
Exemplos
O exemplo a seguir mostra uma possível implementação desse método para um controle 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
Comentários
Quando chamado em um controle que dá suporte a painéis divididos, esse método pode ter o efeito colateral do redimensionamento de outros painéis contíguos.
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.