Вероятно, было бы легче переключаться между видимыми и невидимыми компонентами при изменении состояния.
Таким образом, метка lblFirstName находится в той же позиции x / y, что и текст txtFirstName. Когда lblFirstName является видимым, txtFirstName - нет.
Не должно быть слишком сложно настроить.