No entiendo lo ques estás haciendo, o cuál es el propósito, pero como tengo varias dudas a lo que quieres hacer y voy a tratar de solucionar tu problema.
Conforme a lo que dices tenemos dos formulario Form1 (el que pones en 'enabled = false') y Form2.
Me imaginó que Form2 lo mandas a ejecutar desde el formulario que bloqueas anteriormente Form1, puedes mostrar el segundo formulario Form2 mediante la propiedad ShowDialog() en lugar de Show(), para que no te permita regresar al anterior si no que hasta que cierres este segundo formulario, que por cierto el Show() nada más sirve cuando estas utilizando MDI, que también es otra duda que tengo.
Otra manera es que pases como referencia Form1 a Form2 utilizando descriptores de acceso, lo que harías es lo siguiente:
1. En Form2 declararías una variable tipo Form de la siguiente manera:
private Form Form1;
2. Después declaras el descriptor de acceso, en este caso nada mas puedes utilizar el descriptor tipo Set de la siguiente manera:
public Form Forma1
{
set { this.Form1 = value; }
}
3. Entonces, a las instrucciones que me imagino que tienes en la Form1 para la ejecución de Form2, le agregarías otras más y quedaría como sigue (instrucciones en Form1):
this.Enabled = false;
Form2 forma2 = new Form2();
forma2.Forma1 = this; // Aquí se está pasando como referencia a Form1
forma2.Show(); // o ShowDialog() que es lo que no sé que estes utilizando.
4. Volviendo a la Form2, en su evento FormClosing o FormClosed agregarías lo siguiente:
Form1.Enabled = true;
Entoces lo que se está haciendo es que no se habilitará Form1 hasta que se cierre Form2.
Hojalá y te ayude Saludos.