2014-10-17 3 views
1

У меня есть форма, которая имеет Property с именем Car, который является классом с несколькими свойствами.C# Форма - Изменение свойства

В зависимости от некоторых действий пользователя, что свойства будет установлено в текущем автомобиля отображается.

Так что я хотел знать, когда это свойство назначено или установлено в null.

Я отдаю себе отчет в INotifyPropertyChanged, но в моем случае я не уверен, если это применимо, так как я не хочу, чтобы контролировать мои Car свойств меняется, но Car свойства самого по себе.

Любые идеи, как это сделать?

Заранее спасибо

+3

Пожалуйста, добавьте соответствующий код для формы и 'car' класса. Вы должны иметь возможность добавить 'INotifyPropertyChanged' в форму. – Rhumborl

+0

Правильно, это не перешло мне в голову :) Спасибо – user2779312

+0

Я думаю, что реализация INotifiyPropertyChanged - прекрасная идея. Но если по какой-то причине вы не хотели этого делать (это немного больше проблем, чем альтернатива), вы могли бы придерживаться обычной парадигмы Форм, реализуя обычное старое событие «CarChanged». Затем код, который должен знать, когда значение свойства изменилось, может просто подписаться на это конкретное событие (INotifyPropertyChanged является более общим назначением, что может быть хорошим, но это также означает, что подписчики получают уведомление об изменениях в свойствах _all_, а не только о том, что им нравится около). –

ответ

0

Если вы создали истинное свойство на классе, то вы должны иметь геттер и сеттер. Вы можете добавить код непосредственно в инкубаторе собственности формы, чтобы принять меры в зависимости от которого «автомобиль» значение устанавливается:

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; 
    } 
} 
Смежные вопросы