ITransformProvider.Move(Double, Double) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Denetimi taşır.
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)
Parametreler
- x
- Double
Denetimin sol tarafındaki mutlak ekran koordinatları.
- y
- Double
Denetimin üst kısmındaki mutlak ekran koordinatları.
Özel durumlar
CanMove Özellik false ise.
Örnekler
Aşağıdaki örnekte, taşınabilecek özel bir denetim için bu yöntemin olası bir uygulaması gösterilmektedir.
/// <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
Açıklamalar
Bir nesne taşınamaz, yeniden boyutlandırılamaz veya döndürülemez, böylece sonuçta elde edilen ekran konumu kapsayıcısının koordinatlarının dışında olur ve klavye veya fareyle erişilemez. Örneğin, üst düzey bir pencere tamamen ekran dışına taşındığında veya bir alt nesne kapsayıcının görünüm penceresinin sınırlarının dışına taşındığında. Bu gibi durumlarda nesne, kapsayıcı sınırları içinde olmak üzere üst veya sol koordinatları geçersiz kılınarak istenen ekran koordinatlarına mümkün olduğunca yakın yerleştirilir.