Est-il possible de savoir si l'une des valeurs de la zone de texte a changé dans l'application? J'ai environ 30 textboxes et je veux exécuter une partie du code seulement si, n'importe quelle valeur de textboxes a changé sur le 30. Est-ce que je peux le savoir.Valeur de la zone de texte modifiée
Répondre
Chaque zone de texte déclenche un événement TextChanged
lorsque son contenu a été modifié. Cependant, cela vous oblige à vous abonner à chaque événement. La bonne nouvelle est que vous pouvez vous abonner à l'événement avec la même méthode plusieurs fois. Le gestionnaire a un paramètre sender
que vous pouvez utiliser pour déterminer laquelle de vos 30 zones de texte a réellement déclenché l'événement.
Vous pouvez également utiliser les événements GotFocus et LostFocus pour suivre les modifications réelles. Vous devez stocker la valeur d'origine sur GotFocus
, puis la comparer à la valeur actuelle sur LostFocus
. Cela contourne le problème de deux événements TextChanged
qui s'annulent mutuellement.
Vous pouvez affecter un gestionnaire d'événements à chacun des événements TextChanged de la zone de texte. Tous peuvent être affectés au même gestionnaire d'événements dans le code. Ensuite, vous saurez quand le texte change. Vous pouvez définir un champ d'indicateur booléen dans votre classe pour enregistrer qu'une modification s'est produite.
essayez ceci. Ajoutez ce code au chargement/constructeur. pas besoin de spécifier l'événement dans le XAML explicitement
this.AddHandler(TextBox.TextChangedEvent, new TextChangedEventHandler(TextChanged));
private void TextChanged(object Sender, TextChangedEventArgs e)
{
//ToDO (use sender to identify the actuale text from where it fired }
}
Ceci est peut-être du côté rugueux et prêt, mais je l'ai fait de cette façon.
Dans le constructeur, j'ai créé
bool bChanged = false;
Dans le gestionnaire d'événements TextChanged de chaque contrôle (en fait de même pour chacun), je mets
bChanged = true; Le cas échéant, je pourrais effectuer un traitement et redéfinir bChanged à false.
Vous pouvez également faire ceci:
Dans votre Constructor:
MyTextBox.TextChanged += new TextChangedEventHandler(TextChanged);
Et cette méthode:
private void TextChanged(object Sender, TextChangedEventArgs e){
//Do something
}
- 1. La zone de texte VB.NET a été modifiée mais conserve sa valeur initiale
- 2. Comment récupérer une valeur modifiée de zone de texte de données dans datagrid
- 3. obtenir la valeur de la zone de texte de php
- 4. Comment assigner la valeur (valeur ajoutée totale de chaque zone de texte) à la zone de texte 'txtTotal' dans gridview
- 5. trace la valeur de la zone de texte
- 6. Comment imprimer la valeur de la zone de texte dynamiquement
- 7. Affichage d'une valeur de zone de texte dans une autre zone de texte pendant que l'utilisateur saisit la valeur dans la zone de texte
- 8. Comment forcer la valeur d'une zone de texte sous-classée?
- 9. Ajouter la valeur de la zone de texte à la zone de liste sur l'onglet
- 10. C# Valeur arrondie d'une zone de texte
- 11. conserver la valeur de zone de texte sur window.location
- 12. montrant la valeur de zone de texte en dessous
- 13. asp.net gridview valeur de la zone de texte
- 14. Valeur de la zone de texte avec le séparateur
- 15. C# valeur de la zone de texte sous 2 formes
- 16. valeur de datagridview sur la zone de texte
- 17. Réglage de la valeur TabIndex pour une zone de texte
- 18. comment placer la valeur pour la zone de texte
- 19. Zone de texte Valeur non enregistrée
- 20. La zone de texte ASP.NET perd de la valeur après la publication lorsque la valeur est modifiée côté client via javascript
- 21. Comment obtenir la valeur d'une zone de texte modifiée par asp.net ajax du côté client (par javascript)?
- 22. RoR + Comment actualiser la valeur javascript lorsque Ajax actualise la valeur de la zone de texte
- 23. Comment conserver la valeur d'une zone de texte?
- 24. obtenir la valeur d'une zone de texte avec jQuery
- 25. pourcentage CONCLUEZ zone de texte multiplie la valeur par 100
- 26. Convertir une valeur d'une zone de texte en une zone de texte sous une autre forme
- 27. Copier la valeur de cellule du tableau dans la zone de texte
- 28. Zone de texte incorrecte
- 29. Vérification de la zone de texte vide
- 30. Validation de la zone de texte
La question était "avoir les valeurs ont changé" non « a Événement TextChanged déclenché ". Si un utilisateur édite le texte "banana" sur "bananaX" puis appuie sur backspace, il revient à "banana" ... et rien n'a changé. La détection de manque est absente des contrôles WPF ... – Jack
@Jack - Ajout d'une solution possible pour cela. – ChrisF
Si vous utilisez MVVM + Binding, il n'y a pas de moyen facile de le faire dans WPF car la classe Binding (qui est parfaitement placée pour détecter les modifications en cours) ne ... – Jack