2014-10-17 162 views
1

我有一個表格,其中Property名爲Car這是一個有幾個屬性的類。C#窗體 - 屬性更改

根據一些用戶的行爲是財產將被設置爲當前顯示。

所以我想知道何時該屬性被分配或設置爲空。

我知道了INotifyPropertyChanged的,但在我的情況我不知道,如果因爲我不希望我的監視性能Car改變,但Car財產本身是適用的。

任何想法如何實現這一點?

在此先感謝

+3

請添加相關代碼的形式和'car'類。你應該可以將'INotifyPropertyChanged'添加到表單中。 – Rhumborl 2014-10-17 11:01:59

+0

這是正確的,它並沒有跨越我的腦海:)謝謝 – user2779312 2014-10-17 11:06:39

+0

我認爲實施INotifiyPropertyChanged是一個好主意。但如果由於某種原因你不想這麼做(這比稍微有點麻煩),你可以堅持正常的Forms範例,實現一個普通的舊的「CarChanged」事件。然後,需要知道屬性值何時發生更改的代碼纔可以訂閱該特定事件(INotifyPropertyChanged更具通用性,這可能很好,但這也意味着訂戶會收到有關_all_屬性更改的通知,而不僅僅是他們關心的關於)。 – 2014-10-17 18:29:02

回答

0

如果你創建你的類真正的財產,那麼你應該有一個getter和setter。 您可以在表格setter方法直接添加代碼取決於其「車」採取行動的值設置爲:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    // Define the Car class 
    public class Car 
    { 
     public string Name = string.Empty; 
    } 

    // private variable to hold the current Car value 
    private Car _car = null; 

    // Public form property that you can run code when either the get or set is called 
    public Car car 
    { 
     get 
     { 
      return _car; 
     } 
     set 
     { 
      _car = value; 

      if (_car == null) 
       MessageBox.Show(this, "Run code here when car is set to null", "Car is set to null"); 
      else 
       MessageBox.Show(this, "Run code here: the cars name is: '" + _car.Name + "'", "Car is set to a value"); 
     } 
    } 
    private void SomeFunction() 
    { 
     Car MyCar = new Car(); 
     MyCar.Name = "HotRod"; 

     // This will fire the car setter property 
     this.car = MyCar; 
    } 
}