Требуется реализовать группировку/разгруппировку объектов на форме(а так же группировку групп и тд)

Имеется форма, умеющая рисовать круг, квадрат, треугольник. Эти объекты можно "Выбирать", двигать, менять размер, изменять цвет. Выбор происходит путем зажимания клавиши ctrl и клику по объекту.

Когда выбирается несколько объектов, они изменяются одинаково(но не одновременно, к примеру, один объект, когда достиг формы, останавливает свое действие, а другой, что еще не достиг края формы, продолжает свой путь).

Группировка работает как в PowerPoint - объекты ведут себя одинаково, если один ограничен в движении - ограничены все.

Структура программы:

Базовый класс Model, от него наследуются 3 класса Ellipse, Rectangle, Triangle. А так же класс Group

Хранятся объекты в классе Storage(представляет собой интерфейс для добавления/удаления объектов и тд), все же действия над самим объектом производят сами объекты.

В общем, все что выше - Я реализовал, работает хорошо, но у меня не получатся сделать так, чтобы можно было группировать группы(чтобы они объединялись в одну группу, вели себя как единый объект, а после разгруппировки, снова превращались в 2 разные группы). Код, представленный ниже, - метод группировки, но он, если уже имеется группа, просто при группировке добавляет в эту группу элементы.

C#Выделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14

public void groupObjects()
        {
            objects.Remove(group1);
            for (int i = objects.Count -1 ;i >= 0; i--)
            {
                if (objects[i].isDetailed() )
                {
                    group1.add_in_Group(objects[i]);
                    objects.RemoveAt(i);
                }
                
            }
            objects.Add(group1);
        }

isDetailed() - маркер выделенности объекта.

Изнутри, хранение элементов в классе Group и Storage представляют из себя List<Model>

Может кто подскажет...

Добавлено через 57 минут

public void groupObjects(){} Пытаюсь реализовать в классе Storage