الإرشادات التفصيلية: التصريح و إظهار الأحداث
توضح هذه المعاينة كيفية إعلان واظهار الأحداث لفئة باسم Widget. بعد إكمال الخطوات، قد تحتاج إلى قراءة موضوع مرافق الإرشادات التفصيلية: معالجة الأحداث، الذي يوضح كيفة استخدام الأحداث من كائنات Widget لتوفير معلومات حالة في التطبيق.
فئة عنصر واجهة المستخدم
افترض للحظة أنه لديك فئة Widget. Widget الفئة الخاصة بك لديها أسلوب الذي يمكن أن يستغرق وقتاً طويلاً للتنفيذ وتريد التطبيق الخاص بك أن يتمكن من وضع مؤشر الاكتمال.
بالطبع، يمكنك انشاء كائن Widget لإظهار مربع الحوار مائة-الإكمال ولكن بعد ذلك ستكون عالقا مع ذلك المربع في كل مشروع تستخدم فيه فئة Widget . مبدأ جيد لتصميم الكائن هو السماح للتطبيق الذي يستخدم معالج الكائن واجهة المستخدم — إلا إذا كان الغرض بالكامل من الكائن هو إدارة نموذج أو مربع حوار.
الغرض من Widget هو تنفيذ مهام أخرى لذا فمن الأفضل إضافة PercentDone الحدث وجعل الإجراء الذي ينادي طرق Widgetيعالج ذلك الحدث وعرض تحديثات الحالة. PercentDone الحدث يمكنه أيضاً توفير آلية لالغاء المهمة.
لانشاء مثال التعليمات البرمجية لهذا الموضوع
فتح نافذة تطبيقات مشروع Visual Basic جديدة و قم بإنشاء نموذج باسم Form1.
قم بإضافة زرين وتسمية لـForm1.
قم بتسمية الكائنات كما هو موضح في الجدول التالي.
الكائن
الخصائص
الإعداد
Button1
Text
بدء المهمة
Button2
Text
Cancel
Label
(Name), Text
lblPercentDone 0
في قائمة مشروعقم باختيارإضافة فئة لإضافة فئة بالاسم Widget.vb إلى مشروع.
لـتعريف حدث لفئة عنصر واجهة المستخدم
استخدام الكلمة الأساسية Event لتصريح حدث في فئة Widget. لاحظ أنه يمكن أن يكون لدى حدث ByVal و ByRef الوسائط، كـ Widgetالخاص PercentDone الحدث يوضح:
Public Event PercentDone(ByVal Percent As Single, ByRef Cancel As Boolean)
عندما يستقبل الكائن المنادي حدث PercentDone، الوسيط Percent يحتوي على نسبة المهمة التي اكتملت. وسيط Cancel يمكن تعيينه إلى True لإلغاء الأسلوب الذي ظهر فيها حدث.
ملاحظة
يمكن تعريف الوسائط حدث تماماً كما تفعل وسيطات الإجراءات مع الاستثناءات التالية: لا يمكن أن تحتوي الأحداث Optional أو ParamArray الوسائط والأحداث لا ترجع قيم.
PercentDone الحدث يظهر من قبل LongTask أسلوب الـ Widget الفئة. LongTask يأخذ وسيطين: طول الفترة الزمنية التي يستخدمها الأسلوب للتظاهر بالعمل يمكن و الفاصل الزمني الأدنى قبل LongTask يقف مؤقتا لرفع PercentDone الحدث.
لـرفع حدث PercentDone
لتبسيط الوصول إلى Timer الخاصية المستخدمة في هذه الفئة تضيف Imports الكشف إلى أعلى مقطع التعريفات في وحدة الفئة الخاصة بك أعلا Class Widget العبارة.
Imports Microsoft.VisualBasic.DateAndTime
قم بإضافة التعليمات البرمجية التالية إلى الفئة Widget .
Public Sub LongTask(ByVal Duration As Single, ByVal MinimumInterval As Single) Dim Threshold As Single Dim Start As Single Dim blnCancel As Boolean ' The Timer property of the DateAndTime object returns the seconds ' and milliseconds that have passed since midnight. Start = CSng(Timer) Threshold = MinimumInterval Do While CSng(Timer) < (Start + Duration) ' In a real application, some unit of work would ' be done here each time through the loop. If CSng(Timer) > (Start + Threshold) Then RaiseEvent PercentDone( Threshold / Duration, blnCancel) ' Check to see if the operation was canceled. If blnCancel Then Exit Sub Threshold = Threshold + MinimumInterval End If Loop End Sub
عندما يستدعي التطبيق الخاص بك أسلوب LongTask Widget الفئة تظهر PercentDone الحدث كل MinimumInterval ثواني. عندما يرجع الحدث، LongTask يتحقق لمعرفة ما إذا كان Cancel الوسيط تم تعيينه إلى True.
بعض المتنازلين ضروري هنا. للحصول على البساطة الاجراء LongTask يفترض انك على معرفة مسبقاً كم ستستغرق المهمة. تقريباً هذه هي ليست الحالة. تقسيم المهام في قطع ذات حجم متساوي يمكن أن يكون صعبا و غالباً الأكثر أهمية للمستخدمين ببساطة هو مقدار الوقت الذي يمر قبل حصولهم على إشارة بأن شيئا ييحدث.
قد تكون لاحظة خلل أخر في هذه العينة. Timer الـخاصية تقوم بإرجاع عدد الثواني التي اجتيزت منذ منتصف الليل; لذلك،فان التطبيق يعلق إذا تم تشغيله قبل منتصف الليل مباشرة. أسلوب أكثر حذراً في قياس الوقت سيأخذ شروط الحد مثل هذه بعين الاعتبار أو يتجنبهم تمامًا, باستخدام خصائص مثل Now.
والآن فئة Widget يمكنها رفع الأحداث, يمكنك النقل إلى المعاينة التالية. الإرشادات التفصيلية: معالجة الأحداث يوضح كيفية استخدام WithEvents لإقران معالج حدث مع PercentDone الحدث.
راجع أيضًا:
المهام
الإرشادات التفصيلية: معالجة الأحداث