İngilizce dilinde oku

Aracılığıyla paylaş


EventHandler Temsilci

Tanım

Olay verileri olmayan bir olayı işleyecek yöntemi temsil eder.

public delegate void EventHandler(object sender, EventArgs e);
public delegate void EventHandler(object? sender, EventArgs e);
[System.Serializable]
public delegate void EventHandler(object sender, EventArgs e);
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public delegate void EventHandler(object sender, EventArgs e);

Parametreler

sender
Object

Olayın kaynağı.

e
EventArgs

Olay verileri içermeyen bir nesne.

Öznitelikler

Örnekler

Aşağıdaki örnekte, bir temsilciyle ilişkilendirilmiş adlı ThresholdReached bir EventHandler olay gösterilmektedir. Temsilciye EventHandler atanan yöntem yönteminde çağrılır OnThresholdReached .

using System;

namespace ConsoleApplication3
{
    public class Program3
    {
        public static void Main()
        {
            Counter c = new(new Random().Next(10));
            c.ThresholdReached += c_ThresholdReached;

            Console.WriteLine("press 'a' key to increase total");
            while (Console.ReadKey(true).KeyChar == 'a')
            {
                Console.WriteLine("adding one");
                c.Add(1);
            }
        }

        static void c_ThresholdReached(object? sender, ThresholdReachedEventArgs e)
        {
            Console.WriteLine("The threshold of {0} was reached at {1}.", e.Threshold,  e.TimeReached);
            Environment.Exit(0);
        }
    }

    class Counter
    {
        private readonly int _threshold;
        private int _total;

        public Counter(int passedThreshold)
        {
            _threshold = passedThreshold;
        }

        public void Add(int x)
        {
            _total += x;
            if (_total >= _threshold)
            {
                ThresholdReachedEventArgs args = new()
                {
                    Threshold = _threshold,
                    TimeReached = DateTime.Now
                };
                OnThresholdReached(args);
            }
        }

        protected virtual void OnThresholdReached(ThresholdReachedEventArgs e)
        {
            ThresholdReached?.Invoke(this, e);
        }

        public event EventHandler<ThresholdReachedEventArgs>? ThresholdReached;
    }

    public class ThresholdReachedEventArgs : EventArgs
    {
        public int Threshold { get; set; }
        public DateTime TimeReached { get; set; }
    }
}

Açıklamalar

.NET Framework olay modeli, bir olayı işleyicisine bağlayan bir olay temsilcisine sahip olmayı temel alır. Olay tetikleyebilmek için iki öğe gerekir:

  • Olaya yanıt sağlayan yöntemi tanımlayan bir temsilci.

  • İsteğe bağlı olarak, olay verisi sağlıyorsa olay verilerini tutan bir sınıf.

Temsilci, bir imzayı tanımlayan bir türdür, yani bir yöntemin dönüş değer türü ve parametre listesi türleridir. Temsilciyle aynı imzaya sahip herhangi bir yönteme başvurabilen bir değişken bildirmek için temsilci türünü kullanabilirsiniz.

Olay işleyici temsilcisinin standart imzası, değer döndürmeyen bir yöntem tanımlar. Bu yöntemin ilk parametresi türündedir Object ve olayı oluşturan örneğe başvurur. İkinci parametresi türünden EventArgs türetilir ve olay verilerini tutar. Olay olay verileri oluşturmuyorsa, ikinci parametre yalnızca alanın değeridir EventArgs.Empty . Aksi takdirde, ikinci parametre türünden EventArgs türetilir ve olay verilerini tutmak için gereken tüm alanları veya özellikleri sağlar.

Temsilci EventHandler , özellikle veri oluşturmayan bir olay için bir olay işleyici yöntemini temsil eden önceden tanımlanmış bir temsilcidir. Olayınız veri oluşturuyorsa genel EventHandler<TEventArgs> temsilci sınıfını kullanmanız gerekir.

Olayı, olayı işleyecek yöntemle ilişkilendirmek için olaya temsilcinin bir örneğini ekleyin. Olay her gerçekleştiğinde, olay işleyici (siz temsilciyi kaldırmadığınız sürece) çağrılır.

Olay işleyici temsilcileri hakkında daha fazla bilgi için bkz. Olayları İşleme ve Oluşturma.

Uzantı Metotları

GetMethodInfo(Delegate)

Belirtilen temsilci tarafından temsil edilen yöntemi temsil eden bir nesnesi alır.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.