Трудно сказать, в чем проблема из кода, который вы разместили.
Код, который вы опубликовали, должен работать (форму, показанную с помощью Show (), можно закрыть методом Dispose ()).
Причина, по которой это не работает, вероятно, где-то в той форме, которую вы пытаетесь устранить. Когда вы вызываете метод Dispose () (согласно сообщению об ошибке, это то, что происходит) для объекта, этот объект попытается избавиться от всех своих дочерних элементов и выполнить некоторую очистку. Это место, где нужно искать ошибки.
Мое предложение состоит в том, чтобы закомментировать весь ваш код в форме objfrm (или создать новую пустую форму) и посмотреть, если произойдет ошибка. Этого не должно быть. Затем начните добавлять закомментированный код и посмотрите, когда произойдет ошибка. Могу поспорить, что это будет в коде, который вызывается как следствие метода Dispose.