2010-02-18 5 views
0

J'ai ce dans le code de concepteur de ma forme:Pourquoi BindingSource = newBindingSource pas actualiser les données

this.referenceNumberTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.clientDetailBindingSource, "ClientDetails.ReferenceNumber", true)); 

Dans une méthode sous la forme que je dis juste avant qu'il ne s'affiche

this.clientDetailBindingSource = passedInBindingSource; 

Les contrôles sont databound à this.clientDetailBindingSource ne montrent aucune donnée.

J'ai aussi essayé ResetBindings() mais rien ne s'est passé.

+0

Je sais, cela semble stupide, mais: la nouvelle source de liaison contient-elle réellement les données attendues lorsque vous l'inspectez dans une session de débogage? Ou utilisez-vous des descripteurs de propriétés liés statiquement? – gimpf

+0

Il contient des données 2 éléments dans une liste de la liste Jon

Répondre

1

Les DataBindings de la zone de texte contiennent un objet Binding qui référence la source de liaison d'origine; réaffectant le formulaire de membre de données ne modifie pas l'objet de liaison déjà créé

en d'autres termes, la liaison de la zone de texte est encore lié à l'ancienne source de liaison

à moins que vous effectuez cette tâche avant l'appel à InitializeComponent dans le constructeur du formulaire ...?

+0

Je modifie la source de liaison que le contrôle est lié si bien que le contrôle devrait refléter les changements – Jon

+0

@ [Jon]: non, vous n'êtes pas; vous pensez juste que vous êtes! ;-) InitializeComponent crée les objets Binding qui lient les contrôles à l'objet bindinsource quel que soit l'instant. La modification ultérieure de l'objet bindingsource sur le formulaire n'altère pas par magie les objets Binding déjà créés. –

+0

Puis-je modifier la source de liaison dans l'objet de liaison existant sans effectuer de suppression/ajout? – Jon

Questions connexes