مشاركة عبر


كيفية القيام بما يلي: استخدام الإبهام لتمكين السحب

يوضح هذا المثال كيفية استخدام عنصر تحكم Thumb لتغيير حجم عنصر التحكم Canvas .

مثال

إن عنصر التحكم Thumb يوفر وظائف السحب التي يمكن استخدامها لنقل أو تغيير حجم عناصر التحكم بواسطة مراقبة أحداث DragStarted ، DragDelta و DragCompleted الخاصة بــ Thumb.

يبدأ المستخدم عملية سحب عن طريق الضغط على زر الماوس الأيسر صواب عند إيقاف مؤشر الماوس على عنصر التحكم Thumb . تستمر عملية السحب طالما ظل زر الماوس الأيسر مضغوطًا. أثناء عملية السحب ، يمكن أن يحدث DragDelta أكثر من مرة واحدة. في كل مرة يحدث فيه ، فإن فئة DragDeltaEventArgs توفر التغيير في الموضع الذي يتوافق مع التغيير في موضع الماوس. عندما يقوم المستخدم بتحرير زر الماوس الأيسر ، تنتهي عملية السحب. توفر عملية السحب إحداثيات جديدة فقط ، إنها لا تقوم تلقائياً بتغيير موضع Thumb.

يظهر المثال التالي عنصر تحكم Thumb التابع لعنصر التحكم Canvas . معالج الحدث الخاص بالحدث DragDelta الخاص به يوفر المنطق لنقل Thumb وتغيير حجم Canvas. معالجات الأحداث الخاصة بحدث DragStarted و DragCompleted تقوم بتغيير لون Thumb أثناء عملية السحب. يعرّف المثال التالي Thumb.

<Thumb Name="myThumb" Canvas.Left="80" Canvas.Top="80" Background="Blue" 
      Width="20" Height="20" DragDelta="onDragDelta" 
      DragStarted="onDragStarted" DragCompleted="onDragCompleted"
      />

يظهر المثال التالي معالج الحدث DragDelta الذي ينقل Thumb و يقوم بتغيير حجم Canvas استجابة لحركة الماوس.

void onDragDelta(object sender, DragDeltaEventArgs e)
{
    //Move the Thumb to the mouse position during the drag operation
    double yadjust = myCanvasStretch.Height + e.VerticalChange;
    double xadjust = myCanvasStretch.Width + e.HorizontalChange;
    if ((xadjust >= 0) && (yadjust >= 0))
    {
        myCanvasStretch.Width = xadjust;
        myCanvasStretch.Height = yadjust;
        Canvas.SetLeft(myThumb, Canvas.GetLeft(myThumb) +
                                e.HorizontalChange);
        Canvas.SetTop(myThumb, Canvas.GetTop(myThumb) +
                                e.VerticalChange);
        changes.Text = "Size: " +
                        myCanvasStretch.Width.ToString() +
                         ", " +
                        myCanvasStretch.Height.ToString();
    }
}

يعرض المثال التالي معالج الأحداث DragStarted.

Private Sub onDragStarted(ByVal sender As Object, ByVal e As DragStartedEventArgs)
    myThumb.Background = Brushes.Orange
End Sub
void onDragStarted(object sender, DragStartedEventArgs e)
{
    myThumb.Background = Brushes.Orange;
}

يعرض المثال التالي معالج الأحداث DragCompleted.

Private Sub onDragCompleted(ByVal sender As Object, _
                  ByVal e As DragCompletedEventArgs)
    myThumb.Background = Brushes.Blue
End Sub
void onDragCompleted(object sender, DragCompletedEventArgs e)
{
    myThumb.Background = Brushes.Blue;
}

للحصول على نموذج كاملة ، راجع نموذج أداء سحب الإبهام.

راجع أيضًا:

المرجع

Thumb

DragStarted

DragDelta

DragCompleted