كيفية القيام بما يلي: الاشتراك في إلى وإلغاء الاشتراك من الأحداث (دليل البرمجة C#)

الاشتراك في حدث التي هو publهوhed بفئة أخرى إذا كنت ترغب في كتابة المخصص التعليمات البرمجية التي هو يسمى عند ذلك الحدث هو raهوed. على سبيل المثال، قد الاشتراك زر ما clickحدث لجعل تطبيق القيام بشيء ما يكون ذلك مفيداً عند قيام مستخدم بالنقر فوق الزر.

إلى الاشتراك إلى أحداث باستخدام IDE Studio Visual Basic

  1. إذا كنت لا ترى الإطار خصائص ، في عرض تصميم ، انقر فوق النموذج أو عنصر التحكم الذي تريد إلى إنشاء معالج أحداث، وحدد خصائص .

  2. في الأعلى من الإطار خصائص ، انقر فوق الرمز أحداث.

  3. انقر نقراً مزدوجاً فوق حدث الذي تريده إلى إنشاء، على سبيل المثال Loadحدث.

    #Visual Cإنشاء أسلوب hوler حدث فارغة و إضافته إلى تعليمات برمجية الخاصة بك. بدلاً من ذلك يمكنك إضافة التعليمة البرمجية يدوياً في عرض تعليمات برمجية. على سبيل المثال، سطور تعليمات برمجية التالية بتعريف أسلوب معالج حدث سيتم تسمية متى Formفئة يرفع Loadالحدث.

    private void Form1_Load(object sender, System.EventArgs e)
    {
        // Add your form load event handling code here.
    }
    

    السطر من تعليمات برمجية التي أنه مطلوب إلى الاشتراك إلى حدث هو أيضا auإلىmatically التي تم إنشاؤها في InitializeComponentالأسلوب في الملف Form1.مصمم.cs في مشروع الخاص بك. يشبه هذا:

      this.Load += new System.EventHandler(this.Form1_Load);
    

إلى الاشتراك في إلى الأحداث برمجياً

  1. تحديد أسلوب معالج حدث يتطابق توقيع الخاصة به مع تفويض توقيع للحدث. تشغيل سبيل المثال، إذا كان حدث هو استناداً إلى EventHandlerيمثل نوع التفويض، التعليمة البرمجية التالية كعب روتين للأسلوب:

      void HandleCustomEvent(object sender, CustomEventArgs a)
      {
         // Do something useful here.
      }
    
  2. استخدم عامل الجمع التعيين ( +=) يرفق معالج الأحداث الخاص بك إلى حدث. في ما يلي مثال، بافتراض أن كائن مسمى publisherله حدث باسم RaiseCustomEvent. لاحظ أن المشترك فئة يحتاج إلى مرجع إلى الناشر فئة الاشتراك في الأحداث الخاصة به.

    publisher.RaiseCustomEvent += HandleCustomEvent;
    

    لاحظ أن بناء الجملة السابقة هو جديدة في C# 2.0. هو مساوية تماما لبناء الجملة C# 1.0 الذي المفوض encapsulating يجب بوضوح تاريخ الإنشاء باستخدام newالكلمة الأساسية:

    publisher.RaiseCustomEvent += new CustomEventHandler(HandleCustomEvent);
    

    يمكن أيضا تمت الإضافة معالج حدث بواسطة استخدام تعبير lambda:

    public Form1()
    {
        InitializeComponent();
        // Use a lambda expression to define an event handler.
        this.Click += (s,e) => { MessageBox.Show(
           ((MouseEventArgs)e).Location.ToString());};
    }
    

    لمزيد من المعلومات، راجع كيفية القيام بما يلي: استخدام تعبيرات لامدا خارج LINQ ( ارشادات البرمجة C# ).

إلى الاشتراك إلى أحداث باستخدام الطريقة المجهولة

  • إذا لم يتم إلى إلغاء الاشتراك إلى حدث لاحقاً، يمكنك استخدام operaإلىr التعيين الجمع ( +=) إلى إرفاق أسلوب مجهول إلى حدث. في المثال التالي، بافتراض أن كائن مسمى publisherله حدث باسم RaiseCustomEvent CustomEventArgsكما تم تعريف الفئة إلى تحمل بعض أنواع معلومات متخصصة للحدث. لاحظ أن الفئة المشترك يحتاج إلى مرجع إلى publisherللاشتراك به أحداث.

      publisher.RaiseCustomEvent += delegate(object o, CustomEventArgs e)
      {
        string s = o.ToString() + " " + e.ToString();
        Console.WriteLine(s);
      };
    

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

unsubscribing

إلى prevent your معالج الأحداث من being invoked when the حدث هو مرفوع, unsubscribe من the حدث. في ترتيب إلى prevent مورد leaks, you should unsubscribe من أحداث قبل you dispose of a subscriber كائن. Until you unsubscribe من an حدث, the بث متعدد تفويض that underlies the حدث في the النشر كائن has a مرجع إلى the تفويض that encapsulates the subscriber's معالج الأحداث. كـ long كـ the النشر كائن holds that مرجع, garbage مجموعة will not يحذف your subscriber كائن.

إلى unsubscribe من an حدث

  • استخدم the subtraction assignment عامل (-=) إلى unsubscribe من an حدث:

      publisher.RaiseCustomEvent -= HandleCustomEvent;
    

    When الجميع subscribers have unsubscribed من an حدث, the حدث مثيل في the الناشر فئة هو التعيين إلى null.

راجع أيضًا:

المهام

كيفية القيام بما يلي: نشر الأحداث المتوافقة مع إرشادات NET Framework. (دليل البرمجة لـ #C)

المرجع

الأحداث (دليل البرمجة لـ #C)

حدث (C# مرجع)

عامل التشغيل - ( مرجع C# )

عامل التشغيل += (مرجع #C)