Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список дочерних форм MDI-формы 
:(
    Опции темы
Exception
Дата 31.5.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 5
Всего: 186



Метод 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); // это уже другой экземпляр!
    }
}


Это сообщение отредактировал(а) Exception - 31.5.2007, 18:34
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0369 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.