2009-04-17 11 views
0

にロードするときに、フォームが読み込まれたときにtxtファイルの内容を読み込んで配列に格納するC#アプリケーションを作成しています。次に、フォームのボタンをクリックすると、ボタンのクリックイベントで配列にアクセスします。ボタンのクリックイベントに配列を渡すにはどうすればよいですか?以下のコードでは、「statusArrayは現在のコンテキストに存在しません」というエラーがあり、ボタンのクリックイベントで配列への参照に関連しています。私は何をする必要がありますか?フォーム上のメンバ変数としてフォームが読み込みtxtファイルを配列

スーザン

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(); 


    } 

答えて

2

ストアArrayListには、次のように:

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

これも非公開にするとよいでしょう。 –

1

がグローバルクラスになりReports_Load(object sender, EventArgs e)方法の外にあなたのArrayListの宣言を移動します。

また見つけるかもしれないList<string>(強く型付けされた)

1

ArrayListの配列としてない同じものである、と後で.NET 2.0以上を使用している場合にデータを格納する方が良いだろうArrayListsは悪いです。

これが失敗する原因は、arraylistのスコープがReports_Load()です。クラスレベルに移動し、List<string>と宣言します。

もう1つのオプションは、の場合、配列はFileクラスの.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"); 
} 
関連する問題