簡體   English   中英

以編程方式在 VB.net 用戶控件中定位控件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM