2010-06-22 5 views
4

J'ai une zone de texte liée à une source de données. L'événement TextChanged de la zone de texte met à jour une autre zone de texte.L'événement TextBox TextChanged ne se déclenche pas lorsque Visible = False?

Le problème est que je ne veux pas afficher la première zone de texte, donc j'ai défini sa propriété Visible sur false.

Cependant, maintenant l'événement TextChanged ne se déclenche pas!

Je peux contourner ce problème en définissant Visible=True, Left=-100000 sur le formulaire de chargement, mais je voudrais une solution appropriée.

Quelqu'un peut-il donner une explication?

+0

Quel type de TextBox: WinForms, HTML ou WPF? – Richard

+0

Désolé, winforms. – Blorgbeard

Répondre

7

Définissez votre textbox.Visible = false dans l'événement FormLoad plutôt que dans le concepteur. Cela a à voir avec la gestion de la création. Si la zone de texte n'est pas visible pendant la construction, le handle n'est pas créé. Si la zone de texte est rendue invisible après la construction, alors le handle aura été créé et les événements se produiront.

Voir ce discussion sur MSDN.

-1

Si Visible est égal à false, le Control n'est pas rendu. Par conséquent, il sera incapable de déclencher un événement. Au lieu de cela, définissez style sur display:none. Vous pouvez définir/supprimer ce programme en utilisant la collection Attributes:

MyTextBox.Attributes.Add("style", "display: none"); 
+0

Désolé pour la confusion - je parlais de winforms. Ajouté le tag à la question. – Blorgbeard

0

Quel type de source de données est-il? Il peut avoir un événement que vous pouvez utiliser directement au lieu d'utiliser une zone de texte pour écouter une mise à jour.

3

Une solution alternative à la réponse acceptée est de configurer l'écouteur TextChanged sur Loaded, cela fonctionne pour moi exactement le même (dans Silverlight au moins) et maintient la vue du concepteur comme il se doit.

+0

Merci, cela a fonctionné pour moi où mon contrôle était à l'intérieur d'un pop-up (donc ne pas afficher jusqu'à l'ouverture), et donc l'utilisation de la réponse acceptée n'a eu aucun effet. – Ralt

Questions connexes