Ceci est l'un de ceux "semble évident" comme comment faire, mais est venu à travers l'effet secondaire intéressant dans l'implémentation. J'essaie de synchroniser deux zones de texte lorsque les informations sont mises à jour. Dans cet exemple, j'utiliserai txtStartDate et txtEndDate. Si le txtStartDate est modifié, le txtEndDate devrait être mis à jour. De même, si le txtEndDate change, je veux que le txtSartDate soit mis à jour. L'effet secondaire que je rencontre est que lorsque je les place sous l'événement TextChanged pour les deux, les événements semblent se redéclencher indéfiniment (boucle sans fin?). Est-ce que j'utilise le mauvais événement? Est-ce une tâche pour un délégué?Déclenchement indésirable des événements de zone de texte
0
A
Répondre
1
Vous avez besoin d'une condition supplémentaire. En fonction de votre configuration, cela pourrait être "changer uniquement d'autres valeurs quand j'ai le focus".
Une solution plus générale (je l'espère, vous pouvez lire C#):
private bool changingTextBox1 = false;
void textBox1TextChanged(object sender, EventArgs e)
{
if (! changingTextBox1)
{
changingTextBox1 = true;
try
{
// do stuff
}
finally
{
changingTextBox1 = false;
}
}
}
0
Une façon très simple de résoudre ce serait que vous créez une variable membre UpdateInProgress boolean
dans le Form
et au début de chacun des gestionnaires d'événements que vous vérifiez si elle est true
et si oui vous ignorez l'événement, sinon réglé à true
, puis définissez-le sur false
à la fin de l'événement.
0
Dim bUpdating As Boolean = False
Private Sub txtStartDate_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtStartDate.TextChanged
If Not bUpdating = True Then
bUpdating = True
Try
'do stuff
Catch ex As Exception
Finally bUpdating = False
End Try
End If
End Sub
Questions connexes
- 1. ASP.NET Entrée déclenchement bouton indésirable
- 2. Suppression de texte indésirable à l'extérieur <>
- 3. Événements de zone de liste déroulante VB6
- 4. Gestion des événements du contrôle utilisateur contenant une zone de texte WPF
- 5. Comment est-ce que je peux faire défiler des événements de mouseover de déclenchement de page?
- 6. Zone de texte avec des suggestions déroulantes
- 7. Zone de texte - Centrage de texte
- 8. Telerik RadGrid Custom Aggregate - Texte indésirable
- 9. RegEx pour supprimer le texte indésirable
- 10. Zone de texte incorrecte
- 11. zone de texte désactivée
- 12. Zone de texte HTMl
- 13. Nouvelle zone de texte
- 14. zone de texte désactivée
- 15. Formatage de zone de texte
- 16. Comment masquer automatiquement une zone de texte
- 17. Contrôle de zone de texte
- 18. C# événements winforms restaurer le contenu de la zone de texte lors de l'échappement
- 19. Événements Javascript ne bouillonnant pas lors de l'utilisation de la zone de texte Filigrane
- 20. Comment devrais-je me lier aux événements de ma zone de texte?
- 21. JQuery & IE - délai de déclenchement d'événement
- 22. comportement indésirable de mod_rewrite
- 23. Session de débogage indésirable
- 24. Préséance des événements javascript
- 25. zone de texte arrondie css
- 26. Zone de texte arrondie AS3
- 27. Vérifiez Valider texte dans la zone de texte + Windows Forms
- 28. Transformer une zone de liste en zone de texte
- 29. Problème de modification des valeurs dans la zone de texte
- 30. dessiner des bordures autour de la zone de texte richtext
Eh oui, bien sûr peut. Il fonctionne comme un charme. Repositionner la version de vb.net pour l'enregistrement.
Dim bUpdating As Boolean = False Private Sub txtStartDate_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtStartDate.TextChanged If Not bUpdating = True Then bUpdating = True Try 'do stuff Catch ex As Exception Finally bUpdating = False End Try End If End Sub
–Hmm. Il semble que les réponses ne gèrent pas les tags? –
@hydroparadise: Vous pouvez publier ce code en tant que réponse séparée. Ensuite, utilisez le bouton 001001 pour formater le code. –