2009-04-17 8 views
0

Je travaille sur une application C# où, lorsqu'un formulaire est chargé, je souhaite qu'il lise le contenu d'un fichier txt et le stocke dans un tableau. Ensuite, quand un clic sur un bouton sur le formulaire, je veux que le bouton clic sur l'événement pour accéder au tableau. Comment puis-je passer le tableau à l'événement de clic sur le bouton? Mon code ci-dessous a une erreur "statusArray n'existe pas dans le contexte actuel" et est liée à la référence au tableau dans l'événement click button. Qu'est-ce que je dois faire?Lorsqu'un formulaire charge le fichier txt lu dans le tableau

Susan

private void btnCompleted_Click(object sender, EventArgs e) 
    { 

     for (int i = 0; i < statusArray.Count; i++) 
     { 
      if (statusArray[i].Equals("Complete")) 

       lstReports.Items.Add(statusArray[i-2]); 

     } 
    } 

    private void Reports_Load(object sender, EventArgs e) 
    { 
     // declare variables 
     string inValue; 
     string data; 
     ArrayList statusArray = new ArrayList(); 


     inFile = new StreamReader("percent.txt"); 

     // Read each line from the text file 

     while ((inValue = inFile.ReadLine()) != null) 
     { 
      data = Convert.ToString(inValue); 
      statusArray.Add(inValue); 

     } 

     // Close the text file 
     inFile.Close(); 


    } 

Répondre

2

magasin ArrayList en tant que variable membre sur votre formulaire comme suit:

private ArrayList statusArray = new ArrayList(); 

private void btnCompleted_Click(object sender, EventArgs e) { 

    for (int i = 0; i < statusArray.Count; i++) 
    { 
     if (statusArray[i].Equals("Complete")) 

      lstReports.Items.Add(statusArray[i-2]); 

    } 
} 

private void Reports_Load(object sender, EventArgs e) 
{ 
    // declare variables 
    string inValue; 
    string data; 

    inFile = new StreamReader("percent.txt"); 

    // Read each line from the text file 

    while ((inValue = inFile.ReadLine()) != null) 
    { 
     data = Convert.ToString(inValue); 
     statusArray.Add(inValue); 

    } 

    // Close the text file 
    inFile.Close(); 


} 
+1

Il serait bon de rendre cela privé aussi. –

1

déplacer votre déclaration arrayList en dehors de la méthode Reports_Load(object sender, EventArgs e), ce qui en fait une classe mondiale.

Vous trouverez peut-être aussi un List<string> serait préférable de stocker vos données dans (fortement typé)

1

Un ArrayList est pas la même chose que d'un tableau, et si vous utilisez .Net 2.0 ou version ultérieure ArrayLists sont mal.

En ce qui concerne la raison pour laquelle cela échoue: votre arraylist est étendu à la fonction Reports_Load(). Vous voulez le déplacer au niveau de la classe et déclarer comme List<string>.

Une autre option si vous voulez vraiment voulez un tableau doit utiliser la méthode de classe de fichier .ReadAllLines().

private string[] status; 

private void btnCompleted_Click(object sender, EventArgs e) 
{ 
    for (int i = 2; i < status.Length; i++) 
    { 
     if (status[i] == "Complete") 
      lstReports.Items.Add(status[i-2]); 

    } 
} 

private void Reports_Load(object sender, EventArgs e) 
{ 
    status = File.ReadAllLines("percent.txt"); 
} 
Questions connexes