Partager via


ITransformProvider.Resize(Double, Double) Méthode

Définition

Redimensionne le contrôle.

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)

Paramètres

width
Double

Nouvelle largeur de la fenêtre, en pixels.

height
Double

Nouvelle hauteur de la fenêtre, en pixels.

Exceptions

Si la propriété CanResize a la valeur false.

Exemples

L’exemple suivant montre une implémentation possible de cette méthode pour un contrôle personnalisé qui peut être redimensionné.

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

Remarques

Lorsqu’elle est appelée sur un contrôle qui prend en charge les volets fractionnés, cette méthode peut avoir pour effet secondaire de redimensionner d’autres volets contigus.

Un objet ne peut pas être déplacé, redimensionné ou pivoté de telle sorte que son emplacement d’écran résultant soit complètement en dehors des coordonnées de son conteneur et inaccessible au clavier ou à la souris. Par exemple, lorsqu’une fenêtre de niveau supérieur est déplacée complètement hors écran ou qu’un objet enfant est déplacé en dehors des limites de la fenêtre d’affichage du conteneur. Dans ce cas, l’objet est placé aussi près que possible des coordonnées d’écran demandées, les coordonnées supérieures ou gauche étant remplacées pour se trouver à l’intérieur des limites du conteneur.

S’applique à

Voir aussi