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#?

40
demandé sur Afnan Bashir 2010-11-22 21:05:29

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.

60
répondu SwDevMan81 2013-11-12 11:27:29

Utiliser des combinaisons de ceux-ci pour obtenir le résultat souhaité:

  1. Set Anchor propriété de None, les contrôles ne seront pas redimensionnés, ils changent seulement de position.

  2. Set Anchor propriété Vers Le Haut+Bas+Gauche+Droite, les contrôles seront redimensionnés mais ils ne changent pas de position.

  3. mettez le Minimum Size de la forme à une valeur correcte.

  4. Set Dock propriété.

  5. 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).

16
répondu Bhaskar 2014-11-25 10:40:12
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);
}
9
répondu Mohammad Shahnawaz 2012-09-16 07:15:07

..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.

2
répondu Thushan Fernando 2010-11-23 07:45:12

dans l'événement load du formulaire ajouter cette ligne

this.WindowState = FormWindowState.Maximized;
0
répondu soldiershin 2013-06-14 09:45:56

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;
-1
répondu chirag 2013-02-04 13:08:05
private void MainForm_Load( object sender, EventArgs e ) 
     { 
        this.Size = Screen.PrimaryScreen.WorkingArea.Size 
     }
-1
répondu Sherif Hamdy 2015-02-26 02:08:54
this.WindowState = FormWindowState.Maximized;
-2
répondu user6899728 2016-09-29 13:15:00