创建一个类对象框的新实例()

问题描述:

我在那里, 我的目的是在按下按钮时创建一个新的实例框,该框中有字符串名和Id来填充连接自动生成的ID即0到210加上用户添加的字符串“Box”。 我早些时候在类框中创建一个结构时遇到了问题,坦率地说,我不确定下面的代码是否可以工作,因为我尝试在VB中运行它我得到一个错误,指出我正在使用变量strBoxPositions()和strBoxNumbers )而无需为其分配值。 这个东西是strBoxPositions()应该被arrPosition()自动填充,它将在创建新对象框的同时被创建,并且strNumbers()将被创建为空字符串,以便在后一阶段被使用如有必要。创建一个类对象框的新实例()

有人可以告诉我如何初始化这些数组来让程序运行,也许生病能够看到代码是否有效,或者只是用更好的代码和注释来更正此代码,而且如果可能会出现一些提示,说明如何在文本框字段上更新一次一个地输入字符串的strNumbers数组。

感谢您的帮助

Public class form1 
    Public Class Box 

     Public intBoxID As Integer 
     Public strBoxName As String 
     Structure positions 
      Public strBoxPositions() As String 
      Public strBoxNumbers() As String 
     End Structure 
     Public Sub New() 

     End Sub 

     Public Sub New(ByVal BoxID As Integer, ByVal BoxName As String) 

      intBoxID = BoxID 
      strBoxName = BoxName 

     End Sub 

    End Class 

    Private Sub FormLoad(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Dim ArchiveBox() As Box = {} 
     Dim arrLetters() As String = {"A", "B", "C", "D", "E", "F", "G", "H", "I"} 
     Dim arrNumbers() As String = {"1", "2", "3", "4", "5", "6", "7", "8", "9"} 

     Dim arrPositions() As String '= New String() {} 

     'GABE gave me this code earlier which works fine, thanks.  
     arrPositions = (From letter In arrLetters 
     From number In arrNumbers 
     Select letter + number).ToArray() 
     Dim i As Integer 
     Dim BoxPositions As Box.positions 
     Dim strSampleNr() As String = New String() {""} 
     For i = 0 To 80 

      ListBox1.Items.Add(arrPositions(i)) 
      BoxPositions.strBoxPositions(i) = arrPositions(i) 
      BoxPositions.strBoxNumbers(i) = strSampleNr(i) 

     Next 
    End Sub 
End class 

你的数组,其结构位置的部分永远不会初始化。你应该在昏暗BoxPositions

之后可能对它们进行初始化如果您arrPositions是,你实际上是希望把不同的阵列中的话,我会喜欢的东西去项目的权数:

'this is to create new instances of the arrays used in the position structure 
'Which is what was missed in your initial code. It initializes the arrays as the same size as 
'your arrPositions 

    BoxPositions.strBoxNumbers = New String(arrPositions.Length - 1) {} 
    BoxPositions.strBoxPositions = New String(arrPositions.Length - 1) {} 

那方法是在开始循环过程时准备好大小适当的数组。

但是,由于strSampleNr数组在初始化时没有合适的大小,因此该循环的初始代码仍然不起作用。

Dim strSampleNr() As String = New String() {""} 

因为您没有指定,所以创建一个长度为1的字符串数组。

无论如何,在开始尝试在循环中访问它们之前,您需要使用关键字New来初始化数组。试图访问一个没有实例化的数组会导致你收到的错误。

+0

感谢您的回答,所提供的代码并没有真正的工作。然而,我已经能够解决这个问题。我得到了子初始化并创建了位置并将其分配给数组以及空白空间。暗淡ArchiveBox(1)由于框 昏暗BoxPositions(81)作为Box.positions 昏暗arrPositions()作为字符串 昏暗i设定为整数 BoxPositions(ⅰ)=新Box.positions 对于i = 0到80个 BoxPositions(ⅰ ).strBoxPositions = arrPositions(I) BoxPositions(I).strBoxNumbers = “” ListBox1.Items.Add(BoxPositions(I).strBoxPositions) ListBox1.Items.Add(BoxPositions(I).strBoxNumbers) 接下来 – giovetti

+0

你什么在这里做了一些真正改变的事情。当我回答你时,你有BoxPositions指向一个包含2个数组的结构。现在你有一系列的位置结构。我想我不明白你真的想做什么。 – Jay

+0

我试图达到的是这个。 – giovetti

Dim ArchiveBox(1) As Box 
    Dim BoxPositions(81) As Box.positions 
    Dim arrLetters() As String = {"A", "B", "C", "D", "E", "F", "G", "H", "I"} 
    Dim arrNumbers() As String = {"1", "2", "3", "4", "5", "6", "7", "8", "9"} 
    Dim arrPositions() As String 
    Dim i As Integer 

    BoxPositions(i) = New Box.positions 

    arrPositions = (From letter In arrLetters 
    From number In arrNumbers 
    Select letter + number).ToArray() 

    For i = 0 To 80 

     BoxPositions(i).strBoxPositions = arrPositions(i) 
     BoxPositions(i).strBoxNumbers = "" 
     ListBox1.Items.Add(BoxPositions(i).strBoxPositions) 
     ListBox1.Items.Add(BoxPositions(i).strBoxNumbers) 

    Next 

林正试图找出如何访问BoxID和BoxName属性,并将其分配给一个文本框中的文本,然后创建并保存每次按钮被点击时的它。