Soulever des événements personnalisés en C#, WinForms
J'ai quelques Événements que j'ai créé sur mon propre et je me demandais sur la façon de les élever, quand je veux.
Probablement ma conception de l'application est également foiré, pourrait prendre un coup d'oeil à ça si vous voulez.
C'est la Structure
ProgramContext
- Form MainWindow
+ Control TextBox
+ Control Button
+ ...
Dans ce cas, le MainWindow.TextBox
détient des informations qui est très souvent mis à jour au moment de l'exécution. Donc, j'ai en quelque sorte besoin d'actualiser lui-même, quand je veux (donc il peut recharger ses données à partir de la base de données, où la il est stocké)
J'ai essayé d'accrocher un EventHandler
à son Validating
-Événement, mais qui ne semble pas faire l'affaire.
Donc, en gros, j'ai une méthode qui recharge les données dans ProgramContext
DataTable table = _adapter.GetData();
foreach (DataRow row in table.Rows)
{
MainWindow.TextBox.Text += table.Text.ToString();
}
Qui doit être fait à chaque fois qu'une autre méthode (qui écrit les nouvelles données dans table
) est exécutée.
Des idées?
OriginalL'auteur Florian Peschka | 2010-07-29
Vous devez vous connecter pour publier un commentaire.
Edit : Il semble que votre question est plus sur la connexion à un événement spécifique, mais FWIW ci-dessous est de savoir comment le feu des événements personnalisés en général.
De la manipulation de la zone de texte, un Événement a Changé
De ce que je comprends, vous voulez d'un tiers pour surveiller les événements déclenchés à partir d'une zone de texte dans un Formulaire, puis de recharger les données sur un autre formulaire?
Un rapide et sale serait pour faire la Forme de zone de texte public, puis d'autres pourraient souscrire à cet événement
OU, dans les versions plus récentes de C#:
L'ajout de Votre propre Événement Personnalisé
L'autre, le moyen le plus propre serait de élever un événement personnalisé, - par exemple,
MyDataChangedEvent
ci-dessous. Cela vous permettra de faire abstraction du fait que les changements sont à venir à partir d'une zone de texte.Vous pouvez aussi regarder l'Ent Lib de l'Application Composite Bloc et Smart Client Software Factory - ce a une très flexible courtage /pub sous mécanisme de synchronisation à travers l'INTERFACE utilisateur "SmartParts" (contrôles, les formes, les dialogues, etc) dans un lâche couplé à la mode.(ACR est aujourd'hui très daté).EventHandler
comme danspublic event EventHandler<YourCustomArgsHere> MyEvent
J'ai aussi essayé d'accrocher à
TextChanged
, mais qui se termine dans une boucle infinie, comme je veux modifier le texte dans le Gestionnaire d'événementsVous pouvez modifier le Texte dans le gestionnaire, mais vous devez prendre vers le bas de l'événement pour la durée de la méthode. Vous pouvez le faire comme ceci: appel
this.TextChanged -= SomeClassName_TextChanged
pour désactiver l'événement pour cela de l'appelant, de faire quelques trucs dans la méthode et ensuite appelerthis.TextChanged += SomeClassName_TextChanged
de ré-activer l'événement.OriginalL'auteur StuartLC