Comment déclencher un Contrôle.L'événement de redimensionnement sans redimensionnement?
Je ne suis pas de sous-classer le contrôle. Essayer de déclencher l'événement via Control.Size = Control.Size
échoue, car il ne se déclenche pas alors, même si la nouvelle taille est en fait différent.
si vous n'êtes pas redimensionnement du contrôle, alors pourquoi voulez-vous faire redimensionner!?
Si vous voulez redessiner, la commande ne Contrôle.Invalidate()
J'ai un observateur d'attente pour le Redimensionner à se produire. Modification de l'observateur à l'attente de la repeindre serait inappropriée, car il vient de se redimensionne un contrôle interne.
Si vous voulez redessiner, la commande ne Contrôle.Invalidate()
J'ai un observateur d'attente pour le Redimensionner à se produire. Modification de l'observateur à l'attente de la repeindre serait inappropriée, car il vient de se redimensionne un contrôle interne.
OriginalL'auteur mafu | 2009-02-05
Vous devez vous connecter pour publier un commentaire.
Si vous êtes sous-classement
Control
, vous pouvez appelerOnResize
directement, ou de l'exposer sur l'API:Cependant, vous ne pouvez pas faire cela pour arbitraire des contrôles. Vous pouvez modifier l'
Size
-et-vient? Alternativement, vous pouvez utiliser la réflexion, mais c'est hacky:Je suis entièrement d'accord...
Très sale soultion avec la réflexion...mais il fonctionne réellement.
OriginalL'auteur Marc Gravell
J'ai toujours le faire en appelant le Contrôle de Redimensionnement du gestionnaire d'événement:
OriginalL'auteur John Line
Pourquoi voulez-vous le faire, et dans quel scénario? Vous pouvez appeler OnResize, par exemple, lorsque vous êtes dans le contrôle de lui-même (ie. dans votre dérivée de la classe de contrôle). (Ou par l'intermédiaire de la Réflexion, lorsque vous êtes à l'extérieur.)
En dehors de cela, vous aurez probablement à modifier le contrôle de la taille, puisque c'est ce que l'événement Resize 🙂
OriginalL'auteur Fabian Schmied
Il suffit de changer la taille de la contrôler à l'aide de: Contrôle.Taille = Size(x,y);
La modification de la taille de la commande sera question d'un événement de redimensionnement pour que la commande et le contrôle doit redimensionner.
Sinon, si vous voulez juste pour redessiner le contrôle alors:
De contrôle.Invalidate();
OriginalL'auteur Calanus