J'ai créé un formulaire de test simple avec FormBorderStyle = FixedToolWindow par défaut et ajouté un bouton qui permutera entre FixedToolWindow et SizableToolWindow en appuyant sur la souris.Comportement étrange dans FormBorderStyle entre Fixe et Sizable
Changer le FormBorderStyle entre ces deux semble produire un effet étrange qui cause beaucoup de problèmes sur mon application. Le problème est que la fenêtre semble changer de taille et je ne peux pas l'avoir. Je veux juste changer la bordure, j'ai besoin de la taille du formulaire pour rester le même.
Par exemple, voici le code du bouton:
private void button1_Click(object sender, System.EventArgs e) {
if(FormBorderStyle == FormBorderStyle.FixedToolWindow) {
System.Diagnostics.Debug.WriteLine("SWITCHING: FIXED -> SIZABLE");
FormBorderStyle = FormBorderStyle.SizableToolWindow;
} else {
System.Diagnostics.Debug.WriteLine("SWITCHING: SIZABLE -> FIXED");
FormBorderStyle = FormBorderStyle.FixedToolWindow;
}
}
Et pour déboguer-je utiliser ceci:
private void Settings_SizeChanged(object sender, System.EventArgs e) {
System.Diagnostics.Debug.WriteLine(this.Size);
}
Et voici la sortie quand j'appuie sur le bouton de l'interrupteur:
SWITCHING: FIXED -> SIZABLE
{Width=373, Height=169}
{Width=383, Height=179}
SWITCHING: SIZABLE -> FIXED
{Width=383, Height=179}
{Width=373, Height=169}
Comment réparer ce problème? Et par "réparer", je veux dire, empêcher cela de se produire si possible. Je veux être capable de spécifier la taille de mon formulaire et de rester comme ça, peu importe le type de style de bordure.
Aussi, une solution en sous-classant la classe Form serait la solution parfaite pour moi au cas où quelqu'un aurait des idées pour résoudre ce problème avec une telle méthode.
EDIT:
J'ai fait une petite vidéo pour illustrer le problème. Le premier test montre que la taille du formulaire ne change pas (visuellement), seul l'emplacement du formulaire change un peu; mais les valeurs de la propriété Size changent, comme vous pouvez le voir sur la sortie de débogage. Le deuxième test que vous verrez sur la sortie de débogage que les valeurs de la propriété Taille du formulaire changent et la taille de la fenêtre elle-même changera également.
S'il vous plaît regarder ici:
http://screencast.com/t/0vT1vCoyx2u
Merci, mais cela ne m'aide pas vraiment à résoudre mon problème. C'est pourquoi j'ai créé l'autre question, parce que c'est plus lié. S'il vous plaît vérifier le commentaire que j'ai laissé là si vous êtes intéressé. Je vais marquer cette réponse comme la bonne (pour cette question bien sûr) si je pense que cela s'applique à l'avenir. Ce n'est plus pertinent pour l'instant. –
Pouvez-vous élaborer sur ce que cela * ne résout pas, plutôt que de simplement ignorer cette question et de ne faire attention qu'à votre nouveau? (Ne jamais réécrire à partir de zéro quand vous pouvez refactoriser!) Refactorisez cette discussion - ne la réécrivez pas. – bsneeze
Non, je ne peux pas. Pardon. Si vous ne voulez pas m'aider dans l'autre question, d'accord. C'est votre choix, mais cette question n'est plus pertinente et je ne reviendrai pas ici. Merci pour votre aide. –