2011-09-29 4 views
0

I là, mon but est de créer une nouvelle boîte d'instance à la simple pression d'un bouton, la boîte a des noms de chaînes et Id à remplir concaténant l'ID généré automatiquement ie 0 à 210 plus une chaîne "Box" ajoutée par l'utilisateur. J'ai eu des problèmes en créant une structure dans la classe, franchement je ne sais pas si le code ci-dessous fonctionnera, comme j'essaye de l'exécuter en VB j'obtiens une erreur indiquant que j'utilise les variables strBoxPositions() et strBoxNumbers () sans lui assigner de valeur. La chose est la strBoxPositions() devrait être automatiquement rempli par arrPosition() qui sera créé en même temps que la nouvelle boîte d'objet est créé et les strNumbers() seront créés avec des chaînes vides à remplir à la dernière étape par le utilisé en tant que de besoin.créer une nouvelle instance d'une boîte d'objet de classe()

Quelqu'un pourrait me dire comment pourrais-je initialiser ces tableaux pour faire fonctionner le programme et peut-être mal voir si le code fonctionne ou non, ou simplement corriger ce code avec un meilleur code avec des commentaires, même si possible une indication sur la façon dont je pourrais mettre à jour le tableau strNumbers en entrant les chaînes une à la fois dans un champ de zone de texte.

Merci pour votre aide

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 

Répondre

0

ne sont jamais initialisés Vos tableaux qui font partie des positions de structure. Vous devez les initialiser probablement juste après Dim BoxPositions

Si votre arrPositions est le bon nombre d'articles que vous êtes en train de vouloir mettre dans le tableau séparé alors j'aller avec quelque chose comme:

'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) {} 

Ce comme vous avez un tableau de la bonne taille préparée lorsque vous démarrez le processus en boucle. Toutefois, le code initial de cette boucle ne fonctionnera toujours pas car le tableau strSampleNr n'a pas la bonne taille lorsque vous l'initialisez.

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

Crée un tableau de chaînes d'une longueur de 1, puisque vous ne l'avez pas spécifié.

Dans tous les cas, vous devez initialiser le tableau en utilisant le mot-clé Nouveau sur eux avant de commencer à essayer d'y accéder à l'intérieur de la boucle. Essayer d'accéder à un tableau qui n'a jamais été instancié provoquera l'erreur que vous avez reçue.

+0

Merci pour la réponse, le code fourni n'a pas vraiment fonctionné. J'ai cependant pu régler cela. J'ai eu le sous initialisation et la création des positions et l'attribution à la matrice ainsi que les espaces vides. Dim ArchiveBox (1) Comme Box Dim BoxPositions (81) Comme arrPositions Box.positions Dim() As String Dim i comme nombre entier BoxPositions (i) = New Box.positions Pour i = 0 à 80 BoxPositions (i) .strBoxPositions = arrPositions (i) BoxPositions (i) .strBoxNumbers = "" (ListBox1.Items.Add BoxPositions (i) .strBoxPositions) ListBox1.Items.Add (BoxPositions (i) .strBoxNumbers) Suivant – giovetti

+0

Qu'est-ce que vous fait ici a vraiment changé les choses un peu. Quand je vous ai répondu intially vous aviez BoxPositions qui pointait vers une structure qui contenait 2 tableaux. Maintenant, vous avez un tableau de structures de position.Je pense que je ne comprends pas ce que vous essayez vraiment de faire. – Jay

+0

Qu'est-ce que Im essayant d'atteindre est-ce. – giovetti

0
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 

Im essayant maintenant de savoir comment accéder aux propriétés BoxID et BoxName et l'affecter à un texte de zone de texte, puis créer et enregistrer une chaque fois que vous cliquez sur un bouton.

Questions connexes