ScrollBars indésirables sur parent MDI

cs_zedude33 Messages postés 38 Date d'inscription mardi 1 août 2006 Statut Membre Dernière intervention 9 juillet 2013 - 27 déc. 2012 à 07:41
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 1 janv. 2013 à 18:57
Bonjour à tous,

J'ai récemment créé une application MDI avec un menu sur un panel de la Parent au format. Ce menu a pour but de faire apparaitre ou disparaitre des Childs au format fixe.

Lorsque je travaille sous XP, tout se passe bien, mais sous Vista, deux ScrollBars apparaissent en bas à droite de la Parent lorsqu'une Child apparait et la Child est rognée. (Il faut utiliser ces ScrollBars pour avoir accès à la totalité de la Child Form en cours).

Je pense que c'est un problème de Framework.

Est-ce que quelqu'un aurait une idée pour corriger ce bug ?

Merci.

Thierry.

13 réponses

ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
27 déc. 2012 à 09:17
Bonjour,

Ça n'existe plus le MDI a priori avec vbNet 12, et sans doute avant...

- Tu peux utiliser une form classique.

Sinon, tu dis que selon l'OS ça va plus ou moins bien, imaginant que tu n'as pas partitionné avec 2 OS dans le même panier, j'imagine que tu a 2 PC, donc :

- A mon sens ça peut être un problème de résolution, veux-tu comparer les deux résolutions puis revenir

Cordialement, Joe.
0
cs_zedude33 Messages postés 38 Date d'inscription mardi 1 août 2006 Statut Membre Dernière intervention 9 juillet 2013
1 janv. 2013 à 10:51
Bonjour,

Merci pour ta réponse et excellente année 2013.

Effectivement, je ne travaille pas avec VbNet2012 mais sous VbNet2010.

- Tu peux utiliser une form classique.

En fait mon projet est bien abouti, voir quasi terminé. J'ai juste ce problème à régler. Ca m'embête un peu de reprendre le projet.javascript:void(0);

Sinon, tu dis que selon l'OS ça va plus ou moins bien, imaginant que tu n'as pas partitionné avec 2 OS dans le même panier, j'imagine que tu a 2 PC...

Je travaille sur mon portable pour développer sous XP et l'appli est utilisée au bureau à la boite, sous Vista. Ensuite c'est un .exe tout bête avec un .ini a ses côtés.

- A mon sens ça peut être un problème de résolution, veux-tu comparer les deux résolutions puis revenir...

En fait dans les deux cas (bureau et maison), la ParentForm de l'appli n'est pas maximisée :
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.AutoSize = True
Me.ClientSize = New System.Drawing.Size(1082, 666)
Me.Controls.Add(Me.TitleLbl)
Me.Controls.Add(Me.MenuPnl)
Me.Controls.Add(Me.Panel1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.IsMdiContainer = True
Me.MaximumSize = New System.Drawing.Size(1090, 700)
Me.MinimumSize = New System.Drawing.Size(1090, 700)
Me.Name = "Main"
Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "(...)"
Me.Panel1.ResumeLayout(False)
Me.Panel1.PerformLayout()
Me.MenuPnl.ResumeLayout(False)
Me.ResumeLayout(False)

Les Childs se dimensionnent automatiquement :

NewAffair.MdiParent = Me
NewAffair.Visible = False
NewAffair.Width = Me.Width - MenuPnl.Width - 15
NewAffair.Height = Me.Height - Panel1.Height - 40
NewAffair.StartPosition = FormStartPosition.Manual 'here's the key
NewAffair.Left = 0
NewAffair.Top = 0

Si quelqu'un a une petite idée...

D'avance, merci à tous pour votre aide....

@+
Thierry
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2013 à 11:36
Bonjour,
Il n'est pas invraisemblable que tu travailles alors que Aero est appliqué.
Je n'ai pas Vista, mais sais que les dimensions des fenêtres, alors que Aero est appliqué, sont légèrement modifiées (différence d'environ 10 pixelsn, par rapport à ce que retournent les propriétés de la fenêtre), ce qui expliquerait l'apparition de tes ascenseurs.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_zedude33 Messages postés 38 Date d'inscription mardi 1 août 2006 Statut Membre Dernière intervention 9 juillet 2013
1 janv. 2013 à 14:24
Hum ???

Merci pour l'info, mais pourrais-tu m'en dire un peu plus sur "Aero" (que j'avais lu Apéro au premier abord) ?

Aurais-tu une idée simple de modification de source ou bien un petite astuce pour bricoler quelque chose ?

Merci.

Thierry
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2013 à 15:35
Merci pour l'info, mais pourrais-tu m'en dire un peu plus sur "Aero" (que j'avais lu Apéro au premier abord) ?

Si tu as Vista et ne sembles pas savoir ce qu'est Aero ... Alors que moi, je ne l'ai pas mais le sais ... Nous voilà bien !
Aurais-tu une idée simple de modification de source ou bien un petite astuce pour bricoler quelque chose ?

Si j'ai raison : rien à voir avec le développement !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2013 à 15:36
Tapez le texte de l'url ici.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
1 janv. 2013 à 16:02
Bonjour,

Tu peux vérifier la taille de ces fameuses ScrollBars et redimensionner tes formulaires en fonction quitte à placer tes contrôles dans un tablelayoutpanel pour qu'ils se positionnent automatiquement en fonction de la taille du formulaire.
Voir :
SystemInformation.VerticalScrollBarWidth
SystemInformation.HorizontalScrollBarHeight 
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2013 à 17:57
Je pense qu'il lui faut plutôt corriger de 10 pixels cette partie-là :
NewAffair.Width = Me.Width - MenuPnl.Width - 15
NewAffair.Height = Me.Height - Panel1.Height - 40
NewAffair.StartPosition = FormStartPosition.Manual 'here's the key
NewAffair.Left = 0
NewAffair.Top = 0

ou encore : désactiver Aero ...
Je chercherais après dîner la confirmation de ce que j'ai dit plus haut der mémoire à propos de Aero Vista.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2013 à 18:11
pas trouvé exacftement, mais presque ===>>
Tapez le texte de l'url ici.

Tapez le texte de l'url ici.
on y relate cette "affaire" de 10 pixels de différence par rapport aux valeurs des propriétés retournées
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
1 janv. 2013 à 18:17
Je me suis mal exprimé.
Connaissant la largeur ou hauteur des scrollbars du système, il suffit d'adapter la taille du formulaire enfant de façon à ce qu'il soit légèrement plus petit que le MDI. Ainsi, pas d'affichage des scrollbars.
Pour répartir harmonieusement les contrôles sur le formulaire enfant, on place ceux-ci dans une grille de type TableLayoutPanel.
Tu dînes plutôt tôt
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2013 à 18:30
Tu dînes plutôt tôt

Non. J'ai cherché avant de dîner.
il lui faut diminuer de 10 pixels la hauteur de l'enfant ou augmenter de 10 pixels celle de sa mère


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
1 janv. 2013 à 18:37
il lui faut diminuer de 10 pixels la hauteur de l'enfant ou augmenter de 10 pixels celle de sa mère
En gros c'est ce que je suggérais. SystemInformations donne ces dimensions au pixel près.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2013 à 18:57
Ami Banana32,
corriger en fonction de la largeur des scrollbars fera certes probablement l'affaire puisque cette largeur (17, de mémoire) est par défaut supérieure à 10
cette "solution", toutefois, ===>>
1) n'est pas orthodose
2) est assez hasardeuse, dans la mesure où l'administrateur d'un PC peut, depuis le panneau de configuration, attribuer la largeur de son choix aux scrollbars, avec donc, pour conséquences possibles :*
---- s'il lui donne une valeur très nettement supérieure à 10 pixels : une correction exagérée et, peut-être, une surface utile résiduelle non suffisante pour tout caser*
---- s'il lui donne une valeur inférieure à 10 pixels ===>> retour à la case départ (puisque la correction ne suffira alors pas).
Je crois vraiment qu'il faut là raison garder et corriger de 10 pixels (et ce sera toujours vrai).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous