Comment redimensionner automatiquement et ajuster les contrôles de Formulaire avec changement de résolution
j'ai remarqué que certaines applications changent la position de leurs commandes pour les ajuster autant que possible dans la résolution, si la fenêtre est maximisée, elles se positionnent de telle manière que sur toute interface graphique elles semblent équilibrées. Ma question Est de savoir s'il est possible de réaliser ou d'implémenter cette fonctionnalité dans Visual studio 2010 C#?
8 réponses
Utiliser Station et Ancre propriétés. Ici est un bon article. Notez que ces traitera des changements quand maximiser/minimiser. C'est un peu différent que si la résolution de l'écran change, mais il sera sur la même idée.
Utiliser des combinaisons de ceux-ci pour obtenir le résultat souhaité:
Set
Anchor
propriété de None, les contrôles ne seront pas redimensionnés, ils changent seulement de position.Set
Anchor
propriété Vers Le Haut+Bas+Gauche+Droite, les contrôles seront redimensionnés mais ils ne changent pas de position.mettez le
Minimum Size
de la forme à une valeur correcte.Set
Dock
propriété.Utiliser
Form Resize
événement pour modifier ce que vous voulez
Je ne sais pas comment la taille de la police (étiquette, boîte de texte, combobox, etc.) sera affecté (1) à (4), mais il peut être contrôlé dans (5).
float widthRatio = Screen.PrimaryScreen.Bounds.Width / 1280;
float heightRatio = Screen.PrimaryScreen.Bounds.Height / 800f;
SizeF scale = new SizeF(widthRatio, heightRatio);
this.Scale(scale);
foreach (Control control in this.Controls)
{
control.Font = new Font("Verdana", control.Font.SizeInPoints * heightRatio * widthRatio);
}
..et pour détecter un changement de résolution pour le gérer (une fois que vous utilisez L'accostage et L'ancrage comme SwDevMan81 suggéré) utilisez le SystemEvents.DisplaySettingsChanged event Microsoft.Win32.
dans l'événement load du formulaire ajouter cette ligne
this.WindowState = FormWindowState.Maximized;
ajouter ce code au chargement de la page faire pour tous les contrôles ou ajouter tous les contrôles dans les conteneurs
int x;
Point pt = new Point();
x = Screen.PrimaryScreen.WorkingArea.Width - 1024;
x = x / 2;
pt.Y = groupBox1.Location.Y + 50;
pt.X = groupBox1.Location.X + x;
groupBox1.Location = pt;
private void MainForm_Load( object sender, EventArgs e )
{
this.Size = Screen.PrimaryScreen.WorkingArea.Size
}