Я действительно считаю, что недостатком унаследованного вами приложения является необходимость наличия нескольких родителей (привет, тесно связанная программа!).
Однажды я работал над приложением (стук по дереву, которое мне не придется возвращаться, чтобы поддержать его в ближайшее время), которое было связано, вероятно, так же, как ваше сейчас. Если бы оригинальный автор просто использовал делегаты вместо «this.Parent.Parent.Parent.functionX», мы могли бы добиться больших успехов в исправлении недостатков этого приложения (и делегаты, возможно, даже не были подходящим способом ...) .
Что касается MDI, я предпочитаю это лично, но я не могу говорить о недостатках, которые обнаружил ваш первоначальный разработчик, потому что я стараюсь создать отношения, в которых он / она нуждался.