2017-08-05 3 views
-1

J'ai un formulaire et je veux qu'il soit en plein écran, mais la barre des tâches devrait être encore visible. Et je veux qu'il y ait un panneau, dont les bordures sont à 10px des bordures des formulairesVB.NET ClientSize

J'ai essayé des centaines de combinaisons, et je ne peux tout simplement pas y parvenir.

voici mon code

Public Class Form1 

Sub New() 

    InitializeComponent() 

    WindowState = FormWindowState.Maximized 
    Size = New Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height) 

    Dim p1 As New Panel() 
    p1.Location = New Point(10, 10) 
    p1.Size = New Size(ClientSize.Width - 20, ClientSize.Height - 20) 
    p1.BackColor = Color.Blue 

    Controls.Add(p1) 

End Sub 

End Class 

ce que je veux: http://i.imgur.com/4BxoBeh.png

ce que je reçois: http://i.imgur.com/QynIdaU.png

Répondre

2

je prendrais une approche totalement différente où il n'y a pas besoin de calculer quoi que ce soit:

WindowState = FormWindowState.Maximized 
Size = New Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height) 
Padding = New Padding(10) 

Dim p1 As New Panel() 
p1.Location = New Point(0, 0) 
p1.Dock = DockStyle.Fill 
p1.BackColor = Color.Blue 

Controls.Add(p1) 

Votre calcul est correct pour un formulaire qui prend tout l'écran mais n'est pas maximisé, ce que vous pouvez voir en le désamorçant dès qu'il apparaît. La raison est que vous observez les tailles de formulaire du constructeur qui est un peu trop tôt (même si vous définissez WindowState = FormWindowState.Maximized avant tout le reste, ClientSize a toujours les valeurs corresponding to non-maximized window car la fenêtre n'a pas encore été créée and shown). Si vous déplacez votre code d'origine par ex. un gestionnaire Form.Load il donnera le résultat contraire - semblant correct lorsque le formulaire est maximisé et incorrect sinon.

L'approche de remplissage fonctionne comme prévu dans tous les cas.

+0

Et comment cela résout-il le problème d'OP? Sans explication, comment le PO sait-il ce qu'il a mal fait? – Codexer

+0

@Codexer 'comment cela aborde-t-il le problème d'OP?' - il montre le code simple qui donne le résultat désiré; l'idée est que l'OP recherchera alors les propriétés utilisées qui sont bien documentées. «comment l'OP sait ce qu'ils ont mal» - ils ne l'ont pas, leur calcul est correct [si le formulaire n'est pas maximisé] (https://blogs.msdn.microsoft.com/oldnewthing/20120326-00/?p= 8003 /). Eh bien, oui, cela doit probablement être mentionné dans la réponse. – GSerg

+0

Merci pour les commentaires, ajouter ceci à votre réponse serait génial! – Codexer