很長時間沒有整理做過的東西了,今天由於另一個問題,用到了以前program中的一點東西,一點兒印象也沒有
感覺再不總結下,以後還是會忘,所以今兒總結下:
問題一:調用dll後出現的問題,
public void ReWork(string jimi)
{
try
{
FormCollection ftd = Application.OpenForms;
IEnumerator id = ftd.GetEnumerator();
while (id.MoveNext())
{
string a = id.Current.ToString().Substring(0, id.Current.ToString().IndexOf('.'));
if (a == GetType().Namespace)
{
((Form)id.Current).Close();
((Form)id.Current).Dispose();
id = ftd.GetEnumerator();
}
if (ftd.Count == 1)
break;
}
this.StartDll(jimi);
this.ReSetPoint();
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
}
本身對FormCollection和IEnumerator不是很熟悉,FormCollection本身是一個集合,從Application中我們得到當前獲取打開的所有窗體。
然後通過FormCollection對象的GetEnumeration方法,得到FormCollection實例的枚舉數。
已知這裏id一定不爲空,然後通過迭代執行while循環,在循環體內,判斷一下當前項目的命名空間,現在運行的項目和調用的Dll項目名稱當然是不同的,不同的話再判斷下當前項目的窗體數目,由於已知本項目中只有一個窗體,所以會跳出循環,接着再次會實例化窗體。