This code seems to work:
class CustomHandleForm : Form
{
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
base.DestroyHandle();
}
protected override void DestroyHandle() { }
}
Tested with:
Form f = new CustomHandleForm();
f.Show();
var h1 = f.Handle;
f.Hide();
f.Show();
var h2 = f.Handle;
Trace.Assert(h1 == h2);