2010-12-14 74 views
0

J'ai 3 boutons sur mon formulaire d'entrée de données, OK, APPLIQUER, ANNULER.Événement personnalisé sur l'objet pour changer l'état du bouton

Ce formulaire est utilisé pour modifier un détail du médecin, des choses comme le prénom, numéro de téléphone etc ...

J'ai un objet doctorObj qui, à un moment donné est soit vide (un nouveau médecin) ou d'un objet tiré d'une requête Linq. Je clone en profondeur le docteurObj à EditCopyDoctor qui est du même type mais utilisé pour l'édition de formulaire (donc si Annuler est touché, la base de données n'a pas besoin d'être mise à jour).

Ce que je veux réaliser est d'observer la EditCopyDoctor des changements contre la doctorObj d'origine afin

If(doctor.Changed() && doctor.IsNotNew) 
{ 
ApplyButton.Enabled = true; 
} 
else 
{ 
ApplyButton.Enabled = false; 
} 

Je pensais writting un événement pour déclencher quand quelque chose a changé sur EditCopyDoctor est la meilleure façon de le faire, mais je Je ne sais pas comment.

Je peux bien sûr mettre le code ApplyButton.Enabled dans les événements TextChanged du formulaire mais je me demandais s'il y avait des façons plus rapides de le faire, je ne veux pas vraiment le faire car il y a 10+ textbox et d'autres contrôles.

Répondre

1

Étant donné que votre type "Doctor" sonne comme s'il était généré par LINQ to SQL/Entities, vous devriez constater qu'il implémente déjà l'interface INotifyPropertyChanged. Par conséquent, vous devriez juste regarder l'événement PropertyChanged et agir en conséquence.

+0

Merci Reddog, pouvez-vous m'aider en publiant un exemple de code sur la façon de regarder l'événement PropertyChanged dans le formulaire, désolé, je suis très nouveau. – Rillanon

+0

Je suppose que cette réponse dépend de la façon dont vous liez votre objet de données à l'interface utilisateur (par exemple, la source de liaison? Direct? Quelque chose d'autre?) Et également quel système "LINQ To" vous utilisez. – Reddog