首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VB6 動態建立控制項:Sock、Picture 正常但 Label 不顯示的排查方向

     編輯:程式設計綜合問答

程式碼關鍵片段


Load Picture1(Picture1.UBound + 1)
Load Label1(Label1.UBound + 1)
Load sock(sock.UBound + 1)
SockIndex = Label1.UBound
SockIndex = Picture1.UBound
SockIndex = sock.UBound
Picture1(Picture1.UBound).Visible = True
Picture1(Picture1.UBound).Left = i * 3000
Label1(Label1.UBound).Visible = True
Label1(Label1.UBound).Left = i * 3000

常見原因與檢查清單

  1. 控制項陣列索引未同步:三個 Load 後,SockIndex 被連續指派三次,最終等於 sock.UBound。若三個陣列原始上界不同,導致後續 Picture1(SockIndex)、Label1(SockIndex) 索引錯誤。
    • 修正:各自記錄索引 picIdx = Picture1.UBound、lblIdx = Label1.UBound、sockIdx = sock.UBound,後續分別使用對應索引。
  2. Label 寬度為 0 或 AutoSize=False 且 Caption 為空:
    • 設定 Label1(lblIdx).AutoSize = True 或明確指定 .Width、.Height。
    • 確認 Caption 指派在 Visible=True 之後。
  3. Z-Order 遮蓋:PictureBox 可能蓋在 Label 上方。
    • 呼叫 Label1(lblIdx).ZOrder vbBringToFront。
  4. 容器座標系:若 Label 放在 PictureBox 內,需設定 Label1(lblIdx).Container = Picture1(picIdx)(VB6 不支援動態容器變更,建議同層級)。
  5. 專案元件參考:確認 Microsoft Windows Common Controls 版本一致,避免控制項載入失敗靜默失效。

除錯建議

  • 在 Load 後立即用 Debug.Print Label1(Label1.UBound).Left, .Top, .Width, .Height, .Visible, .ZOrder 輸出屬性。
  • 逐步執行(F8)觀察索引變化。

原答案核心

「label 也是可以的,看下寬度、zindex 順序。調試下就知道了。」

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved