[英]Programatically positioning a control in a VB.net user control
我在 VB.Net VS2019 中有一個用戶控件。 它用於顯示描述、值和單位。 如果描述不是太大,它通常可以工作。 用戶控件中的控件都是標簽。
在調整大小事件中,它將描述寬度調整為總寬度的 66%,值的 22%,以及剩余的任何單位。
然后它將描述的左邊設置為0,將值的左邊設置為描述的寬度(加一點)。 對於單位的position,它把左邊的position的值加上它的寬度加一點。 但是當程序運行時,控件相互重疊,不會占用 UserControl 的整個空間。
例如,UserControl 的寬度為 236,但看起來一切都被壓縮到大約 1/2 或 2/3 秒。 我已將 Anchor 設置為 none 並停靠為 none。
我在“調整大小”事件中執行這些計算,如下所示。 該代碼是從舊的 VB6 程序移植而來的。
“自動”尺寸屬性是否優先於我指定的寬度?
Private Sub UserControl1_Resize(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Resize
Dim lblUnits_Size As Integer
Label1.Height = MyBase.Height
Label2.Height = MyBase.Height
lblUnits.Height = MyBase.Height
Label1.Width = CInt(MyBase.Width * 0.6167)
Label2.Width = CInt(MyBase.Width * 0.22)
' I want the width of the units to be whatever is left over
lblUnits_Size = MyBase.Width - (Label1.Width + Label2.Width) - 6
If lblUnits_Size <= 0 Then lblUnits_Size = 1
lblUnits.Width = lblUnits_Size ' was -> TwipsToPixelsX(lbUnits_Size)
Label1.Left = 0
Label2.Left = (Label1.Left + Label1.Width) + 3
lblUnits.Left = (Label2.Left + Label2.Width) + 3
End Sub
找到了,描述改變后需要調用resize代碼。 我猜 ole VB6 自動執行此操作,或者以某種方式調用了調整大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.