2013-04-15 44 views
7

Có thể kích hoạt một số sự kiện khi có sự thay đổi trong một lớp nhất định không?Kích hoạt một sự kiện khi có sự thay đổi trong một lớp học

Ví dụ: Tôi có một lớp học có các trường 100 và một trong số chúng đang được sửa đổi bên ngoài hoặc nội bộ. Bây giờ tôi muốn bắt sự kiện này. làm như thế nào?

Điều tôi tự hỏi nhất nếu có một mẹo để thực hiện điều này nhanh chóng cho các lớp thực sự mở rộng.

+0

Đây có phải là cách gỡ lỗi hoặc là để cập nhật giao diện người dùng? Câu trả lời sẽ khác nhau cho phù hợp. –

+0

Để cập nhật giao diện người dùng và thực hiện nhiều việc khác – Nickon

Trả lời

13

Là một thực hành tốt nhất, chuyển đổi lĩnh vực công cộng của bạn để tính bằng tay và thực hiện class với INotifyPropertyChangedinterface để nâng cao một sự thay đổi event của bạn.

EDIT: Bởi vì bạn đề cập đến 100 lĩnh vực tôi sẽ đề nghị bạn để cấu trúc lại mã của bạn như thế nào trong câu trả lời tuyệt vời này: Tools for refactoring C# public fields into properties

Dưới đây là một ví dụ của nó:

private string _customerNameValue = String.Empty; 
public string CustomerName 
{ 
    get 
    { 
     return this._customerNameValue; 
    } 

    set 
    { 
     if (value != this._customerNameValue) 
     { 
      this._customerNameValue = value; 
      NotifyPropertyChanged(); 
     } 
    } 
} 
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") 
{ 
    if (PropertyChanged != null) 
    { 
     PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

Kiểm tra này ra: INotifyPropertyChanged Interface

+0

Tôi sợ điều này tôi cần phải thay đổi từng trường theo cách thủ công: S – Nickon

+2

Chuyển mã của bạn! Hãy xem nó dễ dàng như thế nào: [Công cụ để tái cấu trúc các trường công khai C# thành các thuộc tính] (http://stackoverflow.com/questions/1028679/tools-for-refactoring-c-sharp-public-fields-into-properties) –

+1

Ngoài ra, hãy kiểm tra tất cả các câu trả lời cho [câu hỏi này] (http://stackoverflow.com/questions/1315621/implementing-inotifypropertychanged-does-a-better-way-exist). – TylerOhlsen

Các vấn đề liên quan