VB.NET 客户端大小
VB.NET ClientSize
我有一个表单,我希望它是全屏的,但任务栏应该仍然可见。我希望它有一个面板,其边框距离表单边框 10px
我试了上百种组合,就是做不到。
这是我的代码
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
我会采取完全不同的方法,不需要计算任何东西:
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)
对于占据整个屏幕但未最大化的表单,您的计算是正确的,您可以通过在它出现时立即取消最大化来看到它。原因是您正在从构造函数中观察表单大小,这有点太早了(即,即使您在其他所有设置之前设置 WindowState = FormWindowState.Maximized
,ClientSize
仍然具有值 corresponding to non-maximized window because the window has not yet been created ) .如果您将原始代码移动到例如一个 Form.Load
处理程序,它将给出相反的结果 - 当表单最大化时看起来正确,否则不正确。
填充方法在所有情况下都按预期工作。
我有一个表单,我希望它是全屏的,但任务栏应该仍然可见。我希望它有一个面板,其边框距离表单边框 10px
我试了上百种组合,就是做不到。
这是我的代码
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
我会采取完全不同的方法,不需要计算任何东西:
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)
对于占据整个屏幕但未最大化的表单,您的计算是正确的,您可以通过在它出现时立即取消最大化来看到它。原因是您正在从构造函数中观察表单大小,这有点太早了(即,即使您在其他所有设置之前设置 WindowState = FormWindowState.Maximized
,ClientSize
仍然具有值 corresponding to non-maximized window because the window has not yet been created Form.Load
处理程序,它将给出相反的结果 - 当表单最大化时看起来正确,否则不正确。
填充方法在所有情况下都按预期工作。