当我尝试将用户控件置于其上时,为什么窗体会自动调整高度?(C#)

时间:2018-01-19 18:05:47

标签: c# forms winforms

所以基本上我要做的是将PictureBox控件放在具有指定大小的空窗口上,假设窗体的大小实际上总是大于我的控件的大小。但是,无论何时我都是试图使它居中(我的意思是实际上距离窗体边缘的距离相等,宽度的距离相等,高度的距离相等,因为我的代码中的高度和宽度不相等.Ex:width = 700和高度= 500),在表单底部和控件底部之间,空间比表单顶部和控件顶部之间的空间小。

这是一张说明问题的图片: https://i.stack.imgur.com/URozj.png

以下是整个代码,请不要批评其背后的原因,我想知道为什么表单会调整大小或将我的控件放在底部,如果我将其添加到表单中。

wsadmin>AdminApp.list("WebSphere:cell=myCell,node=myNode,server=server1")

以上是我初始化我正在使用的所有内容的代码,并且还有一个函数来返回对象应该相对于它的父对象的位置。下面是我调用初始化的代码表单构造函数中的函数和中心函数。

public static class Engine
{
    public static Graphics G;
    public static Bitmap Map;
    public static PictureBox Canvas;

    public static void Initialize_mystuff(int width, int height)
    {
        Map = new Bitmap(width, height);
        G = Graphics.FromImage(Map);
        Canvas = new PictureBox();
        Canvas.Size = new Size(Map.Width, Map.Height);
        Canvas.BorderStyle = BorderStyle.FixedSingle;
        Canvas.BackgroundImage = Map;
    }

    public static Point CenterUControl(Size Parent, Size Child)
    {
        return new Point(Parent.Width / 2 - Child.Width / 2, Parent.Height / 2 - Child.Height / 2);
    }

}

表单的AutoSize属性也设置为false。

1 个答案:

答案 0 :(得分:0)

表单的大小包括表单的边框和非客户区域(标题栏等)。使用表单的维度时,请使用ClientSize属性:

Engine.Canvas.Location = Engine.CenterUControl(this.ClientSize, Engine.Canvas.Size);