在VB.NET中在父窗体上动态排列用户控件

时间:2012-08-12 07:12:15

标签: vb.net forms user-controls

如何通过代码

在我的父表单中排列控件

到目前为止,我使用此代码调用用户控件;

 Me.ParentForm.Controls.Remove(Me)
 controlMain()

我希望只要用户调整父表单大小或最大化表单,用户控件就会自行排列。目前,我通过

设置控件
    Public Sub controlMain()
        Dim usrctl As New _ctlMain
        _Main.Controls.Add(usrctl)
        usrctl.Location = New Point(_Main.Width / 2 - usrctl.Width / 2, _Main.Height / 2 -usrctl.Height / 2)
    End Sub

在模块上。 _Main 是我的父表单,而 _ctlMain 是被调用的控件。我不打算在设计期间将用户控件放在父窗体上,因为在调用活动控件中的特定功能后,我还有其他用户控件要调用。

我已经尝试过usercontrol的 autosize 属性,但我想它对我的应用程序不起作用。 Usercontrol没有dock和anchor属性。

1 个答案:

答案 0 :(得分:1)

使用其中一个自动布局控件,例如FlowLayoutPanelTableLayoutPanel

不是将用户控件添加到表单本身,而是将它们添加到使用DockStyle.Fill放置在表单顶部的FlowLayoutPanel或TableLayoutPanel控件。

听起来像FlowLayoutPanel就是你想要的。这样,控件的布局就会完全自动处理,并且根据FlowDirection property的值,从左到右或从上到下排列。

选择TableLayoutPanel的唯一原因是,您需要对控件的确切位置进行更精确的控制。它就像HTML表一样,每个控件都有自己的“单元格”。

如果您想确保自动调整尺寸,您还可以设置各个用户控件的Dock和/或Fill属性。例如,您可以设置每个控件以填充放置在TableLayoutPanel中的整个单元格。