2009-12-22 5 views
0

J'ai un contrôle de forme normale et dans la fonction CTOR je donne les résultats suivants:contrôle qui est plus grande que la zone de formulaire est se clipsé en C#

this.Region = System.Drawing.Region.FromHrgn(WinUser.CreateRoundRectRgn(0, 0, this.Width, this.Height, 16, 16)); 

plus tard dans mon App créer un objet ListBox et spectacle En bas de mon formulaire parent, mais la taille de la zone de liste est plus grande que mon formulaire et donc la moitié inférieure de la zone de liste qui est en dehors de la zone de formulaire parent est tronquée. Y at-il un moyen de contourner cela, c'est que je ne veux pas que la taille du formulaire soit augmentée à la place je veux que la Listbox apparaisse complètement même si elle est plus grande que le formulaire.

anand

Répondre

2

Ce genre de don ne peut être accompli si vous créez une fenêtre qui a permis d'étendre au-delà des limites de la forme. Windows supporte cela, la liste déroulante d'une liste déroulante serait un exemple. Windows Forms ne s'en soucie cependant pas beaucoup. Vérifiez mon code dans this thread pour voir comment c'est fait.

+0

Merci, je vais essayer. Pourriez-vous me dire ce que fait "SetBoundsCore"? Et quand appelle-t-on le "nouveau point public"? – Anand

+0

Ce sont les propriétés et les méthodes de la classe Control documentées dans la bibliothèque MSDN. Regarde là d'abord. –

+0

Merci nobug J'ai essayé ça et ça a parfaitement fonctionné. Le seul problème que j'ai maintenant est que le nouveau ListBox obtient le focus et mon formulaire parent est désactivé. Selon ma conception pour mon APP je ne veux pas cela. J'avais besoin de montrer/setTopLevel de mon formulaire parent pour que cela fonctionne (avec un mécanisme de signalement). Comme setTopLevel est un membre protégé d'un contrôle, je ne pouvais pas l'appeler directement depuis mon formulaire parent et utiliser une indirection brute pour appeler une fonction publique dans mon objet listbox. Y at-il un moyen de contourner que setTopLevel doit être appelé pour montrer le contrôle? – Anand

Questions connexes