【问题标题】:Initialising New Label in code - crashes在代码中初始化新标签 - 崩溃
【发布时间】:2011-11-28 09:35:35
【问题描述】:

我正在将应用程序从 VB6 转换为 VB.NET,并且需要在代码中声明和初始化一些控件(控件数组)。我已将其全局声明,因此其他表单可以访问存储在其中的数据,然后我尝试在 Form_Load() 子中操作它们:

Public lblDataZone() As Label

Private Sub Form_Load() Handles Me.Load

    lblDataZone(0) = New Label

    With lblDataZone(0)
            .Height = 13
            .Text = "Zone (l/min)"
            .Left = 6
            .Top = 42
    End With

我得到的错误是“对象引用未设置为对象的实例”。我觉得我在这里遗漏了一些巨大的东西,但有什么问题?

谢谢

【问题讨论】:

    标签: vb.net arrays vb6 controls vb6-migration


    【解决方案1】:

    首先你必须实例化Label 的数组。您可以使用ReDim()New 关键字:

     Private Sub Form_Load() Handles Me.Load
        ReDim lblDataZone(0)   'Or lblDataZone = New Label(0) {}
        lblDataZone(0) = New Label
        With lblDataZone(0)
                .Height = 13
                .Text = "Zone (l/min)"
                .Left = 6
                .Top = 42
        End With
        ....
    

    【讨论】:

      【解决方案2】:

      更改第一个 PUBLIC 以分配具有所需维度的数组,而不仅仅是声明它:

      Public lblDataZone(99) As Label
      
      Private Sub Form_Load() Handles Me.Load
      
        lblDataZone(0) = New Label
      
        With lblDataZone(0)
              .Height = 13
              .Text = "Zone (l/min)"
              .Left = 6
              .Top = 42
        End With
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-04
        • 1970-01-01
        • 2016-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多