Независимо от используемого языка, причина одна и та же. Когда вы открываете первое окно MDI, начальная точка составляет 0,0 относительно кадра MDI, поэтому он открывается в левом верхнем углу кадра. Если вы закроете окно, а затем снова откроете его, начальная точка больше не будет 0,0, а будет иметь другое значение в зависимости от того, как вы открываете окна (каскад и т. Д.). Обычно оно будет немного ниже и правее предыдущего окна, закрыто. Проблема существует, потому что вы или инструмент не проверяете, является ли открываемое окно единственным экземпляром окна во фрейме. Если окно является единственным экземпляром, откройте его в 0,0, в противном случае откройте его в соответствующей позиции относительно других окон.
Эта функция обычно обрабатывается используемой вами библиотекой MDI, или, если нет, вы бы закодировали ее вручную. Это займет всего несколько строк, чтобы закодировать это вручную, так что это должно быть тривиально реализовать.