Vb.net 表单放置-根据父表单将子表单居中

Vb.net 表单放置-根据父表单将子表单居中,vb.net,winforms,Vb.net,Winforms,我正在用vb.net(visual basic)制作一个有两种形式的程序。我有一个作为“主要”基地,它将成为一切的幕后黑手。然后我有另一个附加的表单,假设它位于“main”表单的顶部。当我显示这两个表单时,我就可以做到这一点,但我希望较小的(附加的)表单集中在主表单上。如果你想更容易理解它,它是一个大盒子中的一个小盒子(都居中对齐)。有人知道怎么做吗 谢谢FormStartPosition.CenterParent--这里介绍了一个.NET枚举:听起来您正在为表单演示寻找一个界面。 如果是,那么

我正在用vb.net(visual basic)制作一个有两种形式的程序。我有一个作为“主要”基地,它将成为一切的幕后黑手。然后我有另一个附加的表单,假设它位于“main”表单的顶部。当我显示这两个表单时,我就可以做到这一点,但我希望较小的(附加的)表单集中在主表单上。如果你想更容易理解它,它是一个大盒子中的一个小盒子(都居中对齐)。有人知道怎么做吗


谢谢

FormStartPosition.CenterParent
--这里介绍了一个.NET枚举:

听起来您正在为表单演示寻找一个界面。 如果是,那么您可以尝试使用:

childForm.StartPosition=FormStartPosition.CenterParent


这将使其在屏幕上居中。如果没有,您可能希望尝试显式地将其居中,如图所示。我假设主窗体创建子窗体

当主窗体(
A
)创建小窗体(
B
)时,它应该给
B
自身一个引用(也就是说
B
应该接受
form
类型的构造函数参数,称为类似
backgroundForm
,并传递
A

现在
B
可以如下设置其在OnLoad事件中的位置:
x坐标:
A
的x位置加上
A
宽度的1/2减去
B
宽度的1/2
y坐标:A的y位置加上A高度的1/2减去B高度的1/2


此外,
B
可以订阅
A
中的事件,例如当窗口被移动或调整大小时。

它不是。。。如果我将它设置为MDI,它看起来有点奇怪,并且弄乱了我的设计。MDI用于有父子关系的地方。正如你所描述的,“主基地”似乎是父母,“小基地”是孩子。在MDI设计中,子窗体不能放置在父窗体之外,因此可以保持相对整洁,并且用户可以轻松导航,因为他们知道父窗体的所有子窗口都位于父窗体内。对于现代UI设计来说,您似乎正在寻求的设计有些不同寻常,但是可以通过直接设置子窗体的x、y、top和left属性来实现。请参阅下面我的答案以获取此类链接。