Метод GetForm позволяет получить форму по её типу. Если форма была создана, будет возвращён уже существующий экземпляр, иначе будет создан и возвращён новый. Метод RemoveForm удаляет форму из коллекции дочерних.
| Код | public class MdiForm : Form { private Dictionary<string, Form> childForms = new Dictionary<string, Form> ();
/// <summary>Возвращает создаваемую по требованию дочернюю форму указанного типа.</summary> /// <typeparam name="TForm">Тип формы.</typeparam> private TForm GetForm<TForm> () where TForm: Form, new() { TForm form = this.childForms[typeof(TForm).Name] as TForm; if (form == null) { form = new TForm (); form.MdiParent = this; this.childForms[typeof(TForm).Name] = form; } return form; }
/// <summary>Убирает форму типа <c>TForm</c> из коллекции дочерних.</summary> /// <typeparam name="TForm">Тип формы.</typeparam> /// <returns> /// <c>true</c>, если форма найдена и удачно удалена из коллекции; иначе - <c>false</c>. /// </returns> private bool RemoveForm<TForm> () where TForm: Form, new() { return this.childForms.Remove (typeof(TForm).Name); }
/// <summary>Пример использования кода.</summary> public void SomeMethod () { SomeForm a = this.GetForm<SomeForm> (); SomeOtherForm b = this.GetForm<SomeOtherForm> (); SomeOtherForm c = this.GetForm<SomeOtherForm> (); Assert.IsTrue (b == c); this.RemoveForm<Form2> (); SomeForm a2 = this.GetForm<SomeForm> (); // снова создаём экземпляр SomeForm Assert.IsTrue (a != a2); // это уже другой экземпляр! } }
|
|