2011-12-16 41 views
1

我目前正在開發一個Windows窗體應用程序,我有一個包含notificationForms的arraylist notificationList。如何循環訪問winforms的數組列表?

如何使用for循環遍歷arrayList中的每個表單來檢查表單是否通過isDisposed屬性進行處理?

int formDisposed = 0; 

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

謝謝!

+0

把馬放在馬車前面。在創建表單時,訂閱其FormClosed事件並讓事件處理程序從列表中刪除表單對象。解決這個問題並避免討厭的內存泄漏。 – 2011-12-16 15:47:44

+0

如果我這樣做,我如何通過列表進行搜索並刪除表單,使其成爲我已關閉的特定表單? – Thomas 2011-12-16 16:02:37

回答

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

的ArrayList是可轉位用方括號(notificationList [1]),但是這不會沒有投你的類型的工作。 ArrayList返回類型Object,Object不實現IsDisposed。您可能需要考慮使用通用控件列表(列表<控件>),它們的工作原理相同,但不需要投射。