Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Meningkatkan Peristiwa untuk Perubahan Nilai Harta dalam C#?

Bagaimana untuk Meningkatkan Peristiwa untuk Perubahan Nilai Harta dalam C#?

Barbara Streisand
Lepaskan: 2024-12-28 13:57:09
asal
391 orang telah melayarinya

How to Raise Events for Property Value Changes in C#?

Tingkatkan Acara untuk Perubahan Nilai Hartanah

Apabila bekerja dengan hartanah, anda mungkin menghadapi keperluan untuk mencetuskan acara pada bila-bila masa nilai hartanah perubahan.

Soalan:

Terdapat sifat bernama ImageFullPath1 yang memerlukan peristiwa untuk dipecat apabila nilainya berubah. Walaupun terdapat INotifyPropertyChanged, keperluannya adalah untuk melaksanakan penyelesaian menggunakan peristiwa.

Jawapan:

Antara muka INotifyPropertyChanged sememangnya berdasarkan peristiwa. Ia mempunyai ahli tunggal, PropertyChanged, yang merupakan acara yang membolehkan pengguna melanggan.

Walau bagaimanapun, penyelesaian yang dicadangkan oleh Richard tidak boleh dipercayai. Pelaksanaan yang lebih selamat ialah:

public class MyClass : INotifyPropertyChanged
{
    private string imageFullPath;

    protected void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
            handler(this, e);
    }

    protected void OnPropertyChanged(string propertyName)
    {
        OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
    }

    public string ImageFullPath
    {
        get { return imageFullPath; }
        set
        {
            if (value != imageFullPath)
            {
                imageFullPath = value;
                OnPropertyChanged("ImageFullPath");
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
}
Salin selepas log masuk

Ciri-ciri Pelaksanaan ini:

  • Kaedah pemberitahuan perubahan harta disarikan, membolehkan aplikasi mudah pada sifat lain.
  • Perwakilan PropertyChanged disalin sebelum ia dipanggil untuk mengelakkan perlumbaan syarat.
  • Ia melaksanakan antara muka INotifyPropertyChanged dengan betul.

Acara Khusus Harta Tambahan:

Jika anda juga ingin mencipta acara untuk perubahan dalam sifat tertentu, seperti ImageFullPath, anda boleh tambah:

protected void OnImageFullPathChanged(EventArgs e)
{
    EventHandler handler = ImageFullPathChanged;
    if (handler != null)
        handler(this, e);
}

public event EventHandler ImageFullPathChanged;
Salin selepas log masuk

Panggil OnImageFullPathChanged(EventArgs.Empty) selepas OnPropertyChanged("ImageFullPath").

CallerMemberAttribute dalam .Net 4.5:

protected void OnPropertyChanged(
    [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

public string ImageFullPath
{
    get { return imageFullPath; }
    set
    {
        if (value != imageFullPath)
        {
            imageFullPath = value;
            OnPropertyChanged();
        }
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Meningkatkan Peristiwa untuk Perubahan Nilai Harta dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan