2011-12-16 3 views
1

私は現在、Windowsフォームアプリケーションを開発しており、通知フォームを含むarraylist notificationListを持っています。どのようにwinformsのarraylistをループするのですか?

forループを使用して、フォームがisDisposedプロパティで処理されているかどうかを確認するために、arrayList内のすべての単一フォームをループするにはどうすればよいですか?

int formDisposed = 0; 

for (int i = 0; i < notificationList.Count; i++) 
{ 
    if(notificationList.?????.IsDisposed == true) 
    { 
     formDisposed ++; 
    } 
} 

ありがとうございます!

+0

ワゴンの前に馬を置きます。フォームを作成するときは、そのFormClosedイベントをサブスクライブし、イベントハンドラにリストからフォームオブジェクトを削除させます。この問題を解決し、不快なメモリリークを回避します。 –

+0

このようにすれば、リストを検索してフォームを削除すると、特定のフォームが閉じられていますか? – Thomas

+1

イベントの* sender *引数を使用します。それは閉じられたフォームへの参照です。 –

答えて

0

通常何らかの理由でこのオプションを持っていない場合

if(notificationList[i].IsDisposed) 

を使用して:あなたは.csファイルに以下の行を追加します

using System.Data; 

とSyste.DataとSyste.Data .DataSetExtensionsので、xxx.ElementAt(i)メソッドにアクセスできます。

また、foreachのを使用することができます。

int formDisposed = 0; 

foreach (Form f in notificationList) 
{ 
    if(f.IsDisposed) 
     formDisposed ++; 
} 
+0

あなたはLinqでこれをやろうとすることもできます – Salaros

0

のArrayListは、角括弧(NOTIFICATIONLIST [i])としてインデックス可能ですが、これはあなたのタイプへのキャストせずに仕事に行くのではありません。 ArrayListはObject型を返し、ObjectはIsDisposedを実装しません。コントロールの汎用リスト(リスト<コントロール>)を使用することを検討してください。これは、同じではあるがキャストは必要ないでしょう。

関連する問題