2012-08-12 74 views
0

如何通過代碼在我的父窗體中安排控件?在VB.NET中的父窗體上動態地排列用戶控件

到目前爲止,我用這個代碼調用用戶控件;

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是被調用的控件。我不打算在設計期間將用戶控件放在父窗體上,因爲在調用活動控件中的特定功能後,我有其他用戶控件可以調用。

我試過了autosize屬性的usercontrol,但我想它不適用於我的應用程序。 Usercontrol不具有停靠和錨定屬性。

回答

1

使用其中一個自動佈局控件,如FlowLayoutPanelTableLayoutPanel

不是將用戶控件添加到表單本身,而是將它們添加到使用DockStyle.Fill放置在表單頂部的FlowLayoutPanel或TableLayoutPanel控件。

這聽起來對我來說就像一個FlowLayoutPanel是你想要的。因此,控件的佈局將完全自動處理,它們按照從左到右或從上到下的順序進行定位,具體取決於FlowDirection property的值。

選擇TableLayoutPanel的唯一原因是如果您需要更精確地控制控件的確切位置。它就像一張HTML表格一樣工作,每個控件都有自己的「單元格」。

您還可以設置個人用戶控件的Dock和/或Fill屬性,如果你想以確保他們的大小自動調整。例如,您可以設置每個控件以填充放置在TableLayoutPanel中的整個單元格。

+0

我從來沒有想過我可以將usercontrols添加到flowlayoutpanel。我會嘗試的。 – 2012-08-12 07:49:25

+0

它似乎沒有工作,這是我所做的; 昏暗usrctl作爲新_ctlMain _Main.FlowLayoutPanel.Controls.Add(usrctl) usrctl.Location =新點(_Main.FlowLayoutPanel.Width/2 - usrctl.Width/2,_Main.FlowLayoutPanel.Height/2 - usrctl。 Height/2) – 2012-08-12 07:55:53

+0

試圖將FlowDirection設置爲LeftToRight/RightToLeft,我得到的只是將usercontrol移動到屏幕的另一側。我期待它在FlowLayoutPanel的中心。 – 2012-08-12 08:05:17

相關問題