0

如何通过代码在我的父窗体中安排控件?

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

 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 没有停靠和锚点属性。

4

1 回答 1

1

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

与其将用户控件添加到表单本身,不如将它们添加到使用DockStyle.Fill.

在我看来,FlowLayoutPanel 就是您想要的。这样,控件的布局将完全自动处理,它们的位置可以从左到右或从上到下,具体取决于FlowDirectionproperty的值。

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

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

于 2012-08-12T07:47:29.767 回答