web-dev-qa-db-fra.com

Comment adapter Windows Form à n'importe quelle résolution d'écran?

Je travaille sur VS 2008 avec C #. Ce code ci-dessous ne fonctionne pas pour moi. Mon formulaire a été conçu en résolution 1024 x 768.

L'ordinateur portable de nos clients est en résolution 1366 x 768. Pour résoudre ce problème, j'ai défini le code ci-dessous dans l'événement Form Load:

this.Location = new Point(0, 0);
this.Size = Screen.PrimaryScreen.WorkingArea.Size;

mais le formulaire ne redimensionne pas en fonction de la résolution de l'écran et du bas de mon formulaire est masqué ou coupé ou la barre de défilement me manque.

Y at-il un moyen de résoudre ce problème? S'il vous plaît, montrez-moi la syntaxe. Merci d'avance

34
shamim

Ne pouvez-vous pas commencer à maximiser?

Met le System.Windows.Forms.Form.WindowState propriété à FormWindowState.Maximized

32
ppiotrowicz

Si vous souhaitez définir la taille du formulaire par programme, définissez la propriété StartPosition du formulaire sur Manual. Sinon, les algorithmes de positionnement et de dimensionnement de la fiche interfèrent avec les vôtres. C'est pourquoi vous rencontrez les problèmes mentionnés dans votre question.

Exemple: Voici comment redimensionner le formulaire à une taille située à mi-chemin entre sa taille d'origine et la taille de la zone de travail de l'écran. Je centre aussi le formulaire dans la zone de travail:

public MainView()
{
    InitializeComponent();

    // StartPosition was set to FormStartPosition.Manual in the properties window.
    Rectangle screen = Screen.PrimaryScreen.WorkingArea;
    int w = Width >= screen.Width ? screen.Width : (screen.Width + Width) / 2;
    int h = Height >= screen.Height ? screen.Height : (screen.Height + Height) / 2;
    this.Location = new Point((screen.Width - w) / 2, (screen.Height - h) / 2);
    this.Size = new Size(w, h);
}

Notez que la définition de WindowState sur FormWindowState.Maximized seul ne change pas la taille de la fenêtre restaurée. Ainsi, la fenêtre peut sembler bonne tant qu'elle est maximisée, mais une fois restaurée, la taille et l'emplacement de la fenêtre peuvent toujours être erronés. Je suggère donc de définir la taille et l'emplacement même lorsque vous avez l'intention d'ouvrir la fenêtre de manière maximale.

Un formulaire maximisé est probablement utile, ou vous pouvez le faire manuellement lors du chargement du formulaire:

Bloc de code

this.Location = new Point(0, 0);

this.Size = Screen.PrimaryScreen.WorkingArea.Size;

Ensuite, jouez avec l'ancrage pour que les contrôles enfants de votre formulaire s'adaptent automatiquement à la nouvelle taille de votre formulaire.

J'espère que cela t'aides,

10
Yoko Zunna

Définissez la propriété de formulaire pour qu'elle s'ouvre dans un état maximisé.

this.WindowState = FormWindowState.Maximized;
7
Bhavik Goyal
int h = Screen.PrimaryScreen.WorkingArea.Height;
int w = Screen.PrimaryScreen.WorkingArea.Width;
this.ClientSize = new Size(w , h);
5
mehrdad

Vous pouvez simplement définir l'état de la fenêtre

this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
4
Niranjan singh

il suffit de définir Autoscroll = true pour votre formulaire Windows .. (ce n'est pas une bonne solution mais utile) ..

essayez également pour le panneau (propriété Autoscroll = true)

3
K_Bhosale

Vous pouvez toujours dire à la fenêtre de commencer en maximisé ... cela devrait vous donner le même résultat ... Comme ceci: this.WindowState = FormWindowState.Maximized;

P.S. Vous pouvez également essayer (et je ne le recommande pas) de soustraire la hauteur de la barre des tâches.

2
PedroC88