创建一个类对象框的新实例()
我在那里, 我的目的是在按下按钮时创建一个新的实例框,该框中有字符串名和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来初始化数组。试图访问一个没有实例化的数组会导致你收到的错误。
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属性,并将其分配给一个文本框中的文本,然后创建并保存每次按钮被点击时的它。
感谢您的回答,所提供的代码并没有真正的工作。然而,我已经能够解决这个问题。我得到了子初始化并创建了位置并将其分配给数组以及空白空间。暗淡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
你什么在这里做了一些真正改变的事情。当我回答你时,你有BoxPositions指向一个包含2个数组的结构。现在你有一系列的位置结构。我想我不明白你真的想做什么。 – Jay
我试图达到的是这个。 – giovetti