J'écris une classe de cellule personnalisée DataGridView
qui héberge un contrôle. J'écoute l'événement Invalidated
pour savoir si je devrais repositionner et repeindre la cellule, mais je reçois des boucles car le repositionnement de la cellule peut invalider d'autres cellules hébergées, ce qui invalide la première, et ainsi de suite. Je ne veux pas utiliser un membre statique pour éviter les boucles, car cela n'empêchera pas les boucles causées par des classes de cellules similaires mais indépendantes, si elles ont déjà été utilisées ensemble. J'ai donc besoin de vérifier si la grille est actuellement invalide. Comment je fais ça?Comment savoir si un contrôle est actuellement invalide?
Répondre
Il semble que vous souhaitiez remplacer le membre Paint de la classe DataGridViewCell, plutôt que d'essayer d'écouter et de répondre aux événements Invalidated. La classe de base s'en chargera pour vous et fournira directement l'objet graphique et les informations d'emplacement à la méthode Paint
Vous ne devriez pas avoir à écouter l'événement invalidé. Lorsqu'un contrôle utilisateur est invalidé, onpaint est appelé automatiquement.
Il pourrait y avoir une meilleure façon de résoudre votre problème ultime (par exemple, en peignant votre datagridview personnalisée). Vous pourriez essayer de poster une question détaillée sur votre mise en œuvre et de demander des idées sur la façon de s'y prendre afin de ne pas avoir à contourner ces problèmes (apparemment étranges).
Déjà fait - http://stackoverflow.com/questions/225972/how-do-i-host-a-control-in-a-datagridviewcell-for-displaying-as-well-as-editing - a obtenu une réponse, ce qui était faux. – Simon
Je voudrais, mais à moins que j'obtienne une réponse pour http://stackoverflow.com/questions/654330/can-i-have-an-offscreen-control Je suis coincé avec la synchronisation de la position du contrôle . – Simon