我有一个问题与MDI形式和他们的位置。我有一个容器表单,我在其中打开几个子窗体。还请注意,在容器表单中,我在顶部有一个ToolStrip,它也停靠在顶部。在每个子窗体中,我设置了以下属性。我在设计时也设置了它们,但由于某种原因它不起作用,所以我也把它们放在form_load事件中。
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.Dock = DockStyle.Fill
ReSizeAndArrange(Me.Width, Me.Height, False)
在form_load
和form_layout
事件时调用ReSizeAndArrange
函数。我遇到的问题是,子表单没有正确填充剩余的空间,也没有填充整个父表单。当我逐步执行时,这里是我为子窗体获得的坐标。
frmContainer.Size {Width = 972 Height = 972} System.Drawing.Size
me.Size {Width = 968 Height = 901} System.Drawing.Size
frmContainer.ToolStripMain.Size {Width = 954 Height = 67} System.Drawing.Size
frmContainer.Location {X = 90 Y = 22} System.Drawing.Point
me.Location {X = -9 Y = -36} System.Drawing.Point
Me.Location
不应该是0,0
吗?我想这些数字加起来就是尺寸。这4个像素的差异也许可以用边界来解释,但是,位置是无法解释的。有人能破译吗?
好了,我自己解决了这个问题,只需将表单的位置设置为(0,0)。它仍然没有回答这个问题,但这是一个变通方法。
这是因为0,0没有对表单大小/布局施加限制。它允许它做出决定。您在这里输入的任何值都会强制表单符合您的规范。0,0不是一个变通的方法,这是一种"你自己决定"的方法。