2010-05-04 6 views
2

J'ai des contrôles liés à un contrôle BindingSource.Liaison WinForms

Je veux effectuer un calcul lorsque la valeur change dans un contrôle et définir le résultat sur un autre contrôle. Est-ce que je mets à jour la zone de texte à laquelle la propriété est liée ou est-ce que je mets à jour l'entité sous-jacente qui mettrait à jour le contrôle de toute façon (j'espère)?

Lorsque je change de zone de liste modifiable A (OnPropertyChange), la zone de texte B est mise à jour avec le nouveau résultat calculé. Cela fonctionne bien, mais j'ai remarqué que lorsque je quitte la combobox A, il revient à sa valeur d'origine. Qu'est-ce qui se passe ici! En savoir plus sur votre changement, comment la deuxième zone de texte est liée?

Private Sub ComboBoxEditCostCode_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBoxEditCostCode.EditValueChanged 
    Select Case ComboBoxEditCostCode.EditValue 
     Case "7" 
      CType(TransactionEntityBindingSource.Current, TblTransactionsEntity).Qbdescription = "7-is here" 

     Case "2" 
      CType(TransactionEntityBindingSource.Current, TblTransactionsEntity).Qbdescription = "2-is here" 

     Case Else 
      CType(TransactionEntityBindingSource.Current, TblTransactionsEntity).Qbdescription = "7-is here" 
    End Select 
End Sub 
+1

Avez-vous du code dans l'événement 'OnChanged' de la zone de texte A qui fait le calcul, puis définit la propriété' Text' de B? – MusiGenesis

+0

correct .. que exactement ce que je fais! – Anthony

Répondre

0


Vous devez modifier vos données initiales au lieu de modifier la valeur b de la zone de texte.
De même, lorsque la zone de texte A perd, focus déclenche l'événement EndEdit et je pense que le mécanisme de liaison actualise la valeur dans la zone de texte B.
Vous pouvez contrôler l'action à effectuer lorsque vous définissez votre liaison aux zones de texte.

+0

J'ai un Entit (en fait une entité llblgen) avec beaucoup de propriétés. La propriété A est liée à TextBoxA et la propriété B est liée à TextBoxB. J'ai lié les contrôles en utilisant l'éditeur de propriétés ... comment puis-je contrôler l'édition d'action ... merci d'avance – Anthony

+0

Selon vos réponses précédentes, vous définissez la valeur de la zone de texte B sur l'événement textboxA_OnChanged, mais vous devez changer la propriétéB et don Ne touchez pas la valeur textboxB. Et en changeant cette propriété, vous obtenez l'élément actuel dans votre BindingSource et vous le convertissez en type de votre source de données. –

+0

fait ce que vous avez demandé par exemple CType (BindingSource.Current, TblTransactionsEntity) .B = TextBoxA.Text & "Bonjour" .. même chose qui se passe (son dong la bonne chose jusqu'à ce que le contrôle perd le focus) ....... le problème semble se produire uniquement lorsque le contrôle perd son focus. – Anthony

1

Si nous lions un contrôle à une source, alors si la source change, nous pouvons rendre sa valeur automatiquement reflétée dans le contrôle. À propos du problème que vous rencontrez, il serait préférable que vous montriez l'extrait de code.

0

En règle générale, si vous utilisez une source de liaison, vous devez toujours exécuter les données. N'oubliez pas d'appeler BindingSource.EndEdit lorsque vous avez terminé, espérons que cela aide

Questions connexes