2010-01-22 74 views
1

我有一个System.Windows.Forms.Form,我需要在运行时设置客户区的大小。奇怪的是,即使当我将ClientSize property设置为800x600时,该区域的右侧和底侧也会缩小4个像素,这会导致我的内容在两个方向上都会缩小4个像素。Form.ClientSize中没有渲染大小的窗体客户区大小

在Windows XP和Windows Classic主题中都会出现此行为。

从我对MSDN文档的理解,这应该做我想做的 - 但事实并非如此。

的 形式的客户区的大小是不包括 边界和标题栏的形式的大小。

示例代码浏览:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     this.ClientSize = new Size(800, 600); 
    } 
} 

是怎么回事?我注意到the comments of an answer to another question这是发生在别人身上。有什么方法可以可靠地设置客户区的大小?

+1

我只是试过这个代码(在VS2008,Win7上),它没有任何额外的像素(在屏幕截图上测量)正确执行。也许你使用的特定主题有被视为边界的隐形部分? – 2010-01-22 03:01:53

+1

您的表单上是否设置了最大高度和最大宽度?否则,尺寸设置的工作非常可预测。 – 2010-01-22 03:02:29

+0

感谢您的建议。我尝试设置最大/最小尺寸以及Windows XP和Windows Classic主题。我仍然看到4像素的形状太小而不能在右边和底部。 :( – 2010-01-22 03:28:51

回答

1

事实证明,我的问题根本不在于Form。窗体中有一个System.Windows.Forms.WebBrowser控件 - 并且有一个边框。由于WebBrowser控件没有任何边框属性,我没有怀疑它。