ITransformProvider.Move(Double, Double) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Verschiebt das Steuerelement.
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)
Parameter
- x
- Double
Absolute Bildschirmkoordinaten der linken Seite des Steuerelements.
- y
- Double
Absolute Bildschirmkoordinaten am oberen Rand des Steuerelements.
Ausnahmen
Wenn die CanMove Eigenschaft "false" ist.
Beispiele
Das folgende Beispiel zeigt eine mögliche Implementierung dieser Methode für ein benutzerdefiniertes Steuerelement, das verschoben werden kann.
/// <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
Hinweise
Ein Objekt kann nicht verschoben, verkleinert oder gedreht werden, sodass sich die resultierende Bildschirmposition vollständig außerhalb der Koordinaten des Containers befindet und nicht auf Tastatur oder Maus zugegriffen werden kann. Wenn beispielsweise ein Fenster der obersten Ebene vollständig außerhalb des Bildschirms verschoben wird oder ein untergeordnetes Objekt außerhalb der Grenzen des Viewports des Containers verschoben wird. In diesen Fällen wird das Objekt so nah an den angeforderten Bildschirmkoordinaten wie möglich platziert, wobei die oberen oder linken Koordinaten außer Kraft gesetzt werden, um sich innerhalb der Containergrenzen zu befinden.