如何通过代码?
在我的父表单中排列控件到目前为止,我使用此代码调用用户控件;
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属性。
答案 0 :(得分:1)
使用其中一个自动布局控件,例如FlowLayoutPanel或TableLayoutPanel。
不是将用户控件添加到表单本身,而是将它们添加到使用DockStyle.Fill
放置在表单顶部的FlowLayoutPanel或TableLayoutPanel控件。
听起来像FlowLayoutPanel就是你想要的。这样,控件的布局就会完全自动处理,并且根据FlowDirection
property的值,从左到右或从上到下排列。
选择TableLayoutPanel的唯一原因是,您需要对控件的确切位置进行更精确的控制。它就像HTML表一样,每个控件都有自己的“单元格”。
如果您想确保自动调整尺寸,您还可以设置各个用户控件的Dock
和/或Fill
属性。例如,您可以设置每个控件以填充放置在TableLayoutPanel中的整个单元格。