[C#] OnSizeChanged et Load
Bonjour,
J'utilise pour le développement de mon application, plusieurs nvieaux d'imbrication de UserControls. Je suis à un moment confonté à un "bug" Microsoft lié aux OS 64 bits : lorsque je passe mon form en plein écran, les différents UserControls se redimensionnent, mais il y a un problème avec le contenu des UserControls du dernier niveau... (source : http://blogs.msdn.com/b/alejacma/arc...depth-x64.aspx)
J'ai donc tenté d'appliquer 2 des solutions proposées, consistant à overrider le OnSizeChanged pour les UC posant problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| protected void ChangeSize()
{
if (childPanel != null)
{
childPanel.Size = new Size(
this.ClientSize.Width - 2 * childPanel.Left,
this.ClientSize.Height - 2 * childPanel.Top);
}
}
protected override void OnSizeChanged(System.EventArgs ea)
{
if (this.Handle != null)
{
BeginInvoke(new MethodInvoker(ChangeSize))
}
base.OnResize(ea);
} |
Code:
1 2 3 4 5 6 7 8 9 10 11
|
protected override void OnSizeChanged(EventArgs e)
{
if (this.Handle != null)
{
this.BeginInvoke((MethodInvoker)delegate
{
base.OnSizeChanged(e);
});
}
} |
Le redimensionnement s'effectue maintenant correctement. Néanmoins, j'ai alors un autre problème : le UC ne semble plus rentrer dans l'événement Load. J'ai besoin de cet événement, car la fonction d'initialisation du UC y est appelée directement pour répondre à certains besoins spécifiques...
Auriez vous une idée me permettant d'expliquer cela ou de contourner le problème?
Merci...