ITransformProvider.Move(Double, Double) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
컨트롤을 이동합니다.
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)
매개 변수
- x
- Double
컨트롤 왼쪽의 절대 화면 좌표입니다.
- y
- Double
컨트롤 위쪽의 절대 화면 좌표입니다.
예외
속성이 CanMove false이면
예제
다음 예제에서는 이동할 수 있는 사용자 지정 컨트롤에 대 한이 메서드의 가능한 구현을 보여 주세요.
/// <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
설명
개체의 결과 화면 위치가 컨테이너의 좌표 밖에 있고 키보드나 마우스에 액세스할 수 없도록 개체를 이동, 크기 조정 또는 회전할 수 없습니다. 예를 들어 최상위 창이 완전히 화면 외부로 이동되거나 자식 개체가 컨테이너 뷰포트의 경계 밖으로 이동하는 경우입니다. 이러한 경우 개체는 컨테이너 경계 내에 있도록 재정의된 위쪽 또는 왼쪽 좌표를 사용하여 요청된 화면 좌표에 최대한 가깝게 배치됩니다.