Je suis novice en programmation et j'ai du mal à comprendre la durée de vie/l'instanciation de l'objet.Durée de vie de plusieurs instances d'un objet/modèle de conception
J'ai une fenêtre de avec un datagridview et un panneau.
La vue datagrid dispose d'une colonne de cases à cocher et d'une liste de noms qui est renseignée à partir d'une base de données.
Le panneau comporte quelques zones de texte (par exemple, le nom, l'âge, l'équipe sportive favorite) et un bouton «enregistrer les modifications». L'idée est que lorsque l'utilisateur sélectionne une personne dans la grille de données en cochant la case appropriée, le panneau affiche les données pertinentes pour cette personne (nom, âge, équipe sportive favorite) en extrayant les données d'une base de données. Si l'utilisateur souhaite mettre à jour les détails de la personne, il peut le faire en tapant les zones de texte, puis en cliquant sur le bouton «enregistrer les modifications». Tout est assez simple jusqu'à présent.
La façon dont j'ai conçu cela est d'avoir une classe 'panel' et de créer une instance lorsque l'utilisateur cocher une case. (NB - la raison pour laquelle j'ai créé une classe 'panel' est que j'ai l'intention de répliquer datagridview et panel sur d'autres tabges dans mon formulaire et j'ai pensé qu'il serait utile d'avoir une classe générique 'panel' que je pourrais réutiliser .)
Mon code ressemble un peu à ceci:
If CheckBoxClicked Then
Dim UpdatePanel As New UpdatePanel(MyForm.NameTextBox, MyForm.AgeTextBox, MyForm.FavSportTeamTextBox, MyForm.SaveButton)
UpdatePanel.GetData()
...
Lorsque l'utilisateur clique sur le bouton Enregistrer les données sont mises à jour à la base de données et j'ai un message d'affichage (zone de texte simple,) qui dit « Mise à jour réussie » et affiche pendant 5 secondes avant de se cacher.
Voici le problème:
Supposons qu'un utilisateur vérifie une case à cocher, passe en revue les données et ne fait pas de changement, et vérifie ensuite une autre case à cocher et décide de mettre à jour les données en cliquant sur le bouton « Enregistrer les modifications ». Ce qui se passe est que le message "Mise à jour réussie" est affiché deux fois.
Je pense que c'est parce que chaque fois que l'utilisateur coche une case, une instance de UpdatePanel est créée. Si je sélectionne cinq personnes différentes en utilisant les cases à cocher, puis cliquez sur «enregistrer les modifications», je reçois cinq messages «Mettre à jour avec succès».
Je ne sais pas comment surmonter cela. Il semble que chaque fois que l'on clique sur une case à cocher, j'ai besoin de vérifier si une instance de UpdatePanel existe, puis de le détruire. J'ai essayé d'employer UpdatePanel = Nothing et ai également examiné IDisposable et GC.Collect() mais sans la chance.
Mes questions sont les suivantes:
- Comment puis-je faire en sorte que seule instance du panneau est créé?
- Si je crée plusieurs instances de le même objet avec le même nom -ils tous assis en mémoire ou ne le « ordinateur » ne conservent qu'une référence le plus récemment créé ? (Y a-t-il pas un nom conflit?)
- Ai-je descendu la mauvaise piste avec mon modèle de dessin et l'utilisation de la classe «panneau»?
Merci