這裏是FormsCollection
類,我在我的評論中提到:
public class FormsCollection : IEnumerable
{
private Collection c = new Collection();
public Form Item {
get { return c.Item(index); }
}
public void Add(Form frm)
{
c.Add(frm);
}
public virtual IEnumerator GetEnumerator()
{
return c.GetEnumerator;
}
public void Remove(Form frm)
{
int itemCount = 0;
for (itemCount = 1; itemCount <= c.Count; itemCount++) {
if (object.ReferenceEquals(frm, c.Item(itemCount))) {
c.Remove(itemCount);
break;
}
}
}
}
然後你將需要在某個地方實例化一個FormsCollection
,然後在中,將它添加到集合中,如下所示:
formsCollection.Add(this);
和Disposed
:
formsCollection.Remove(this);
這將讓你Activate
的Form
,如果它已經加載,而不是打開一個新的實例。
if (FormLoaded(yourForm.Name))
{
yourForm.Activate()
}
else
{
yourForm.Show()
}
這裏是FormLoaded
功能:
public bool FormLoaded(string strFormName)
{
bool functionReturnValue = false;
foreach (Form f in Forms) {
if (f.Name == strFormName) {
functionReturnValue = true;
break;
}
}
return functionReturnValue;
}
我處理這個問題是通過添加'FormsCollection'類的方式。在我想限制爲一個實例的任何'Form'中,我將它添加到'FormsCollection'中,然後在'Disposed'方法中,將它從FormsCollection中移除。如果我想限制爲一個實例,我只需檢查'Forms'是否存在於'FormsCollection'中。 –
什麼是「ADC」?另一個「形式」? –
@dubstylee我發現這個工作。謝謝 – SwimBikeRun