كيفية القيام بما يلي: معالجة أحداث متعددة باستخدام خصائص الحدث

لاستخدام خصائص الحدث (الأحداث المخصصة في Visual Basic 2005) ، تقوم بتعريف خصائص الحدث في الفئة التي تنفذ الأحداث , ثم قم بتعيين المفوضين لخصائص الحدث في الفئات التي تعالج الأحداث. لتنفيذ خصائص متعددة للحدث في فئة ، الفئة يجب أن تخزن المفوض المعرّف لكل حدث داخليًا و الاحتفاظ به. الأسلوب الأمثل لتنفيذ مجموعة مفوضين مفهرسة بواسطة مفتاح الحدث.

لتخزين المفوضين لكل حدث , يمكنك استخدام الفئة EventHandlerList أو قم بتنفيذ المجموعة الخاصة بك. فئة المجموعة يجب أن توفر أساليب لإعداد , و للوصول إلى ، و لاسترداد المفوض استناداً إلى مفتاح الحدث. على سبيل المثال، يمكنك استخدام الفئة Hashtable , أو اشتقاق فئة مخصصة من الفئة DictionaryBase. تفاصيل التنفيذ لمجموعة المفوضين لا تحتاج إلى كشفها خارج الفئة الخاصة بك.

كل خاصية حدث تنتمي لفئة تعرف أسلوب إضافة القيمة و أسلوب إزالة القيمة. أسلوب إضافة القيمة لخاصية حدث , يضيف مثيل المفوض المُدخل إلى مجموعة المفوضين. أسلوب إزالة القيمة لخاصية حدث يزيل مثيل المفوض المُدخل من مجموعة المفوضين. معالج قيمة خاصية الحدث يستخدم مفتاح مُعرف مسبقاً لخاصية الحدث لإضافة و إزالة مثيلات من مجموعة المفوضين.

لمعالجة أحداث متعددة باستخدام خصائص الحدث

  1. تُعَرِف مجموعة مفوضين داخل الفئة التي تنفذ الأحداث.

  2. تُعَرِف مفتاح لكل حدث.

  3. تُعَرِف خصائص الحدث في الفئة التي تنفذ الأحداث.

  4. استخدم مجموعة المفوضين لتنفيذ أساليب إضافة و إزالة القيمة لخصائص الحدث.

  5. استخدم خصائص الحدث العامة لإضافة و إزالة مفوضين معالج الأحداث في الفئات التي تعالج الأحداث.

مثال

مثال C# التالي ينفذ خصائص الحدث MouseDown و MouseUp ، باستخدام EventHandlerList لتخزين مفوض كل حدث. الكلمات المفتاحية لثوابت خاصية الحدث مكتوبة بخط غامق.

ملاحظةملاحظة

خصائص الحدث غير مدعومة في Visual Basic 2005.

// The class SampleControl defines two event properties, MouseUp and MouseDown.
class SampleControl: Component {
   // :
   // Define other control methods and properties.
   // :
   
   // Define the delegate collection.
   protected EventHandlerList listEventDelegates = new EventHandlerList();
   
   // Define a unique key for each event.
   static readonly object mouseDownEventKey = new object();
   static readonly object mouseUpEventKey = new object();
   
   // Define the MouseDown event property.
   public event MouseEventHandler MouseDown {  
      // Add the input delegate to the collection.
      add { listEventDelegates.AddHandler(mouseDownEventKey, value); }
      // Remove the input delegate from the collection.
      remove { listEventDelegates.RemoveHandler(mouseDownEventKey, value); }
   }

   // Define the MouseUp event property.
   public event MouseEventHandler MouseUp {
      // Add the input delegate to the collection.
      add { listEventDelegates.AddHandler(mouseUpEventKey, value); }
      // Remove the input delegate from the collection.
      remove { listEventDelegates.RemoveHandler(mouseUpEventKey, value); }
   }
}

راجع أيضًا:

المهام

كيفية: الإعلان عن الأحداث التي المحافظة على استخدام الذاكرة

المرجع

System.ComponentModel.EventHandlerList

System.Web.UI.Control.Events

المبادئ

رفع أحداث متعددة

موارد أخرى

معالجة ورفع الأحداث