Для этого есть несколько способов.
В событии FormClosing обычно более эффективно скрывать форму и отменять событие, но для этого может потребоваться дополнительная логика.
Если у вас нет дорогого кода, который должен выполняться при создании формы, это, вероятно, не имеет значения, и будет проще просто позволить форме нормально закрыться.
В любом случае, все, что вам нужноВ частности, нужно добавить некоторые меры безопасности в обработчик btnSearch, чтобы он мог соответствующим образом реагировать на состояние формы f
;
public Form2 f;
public void BtnSearch_Click(object sender, EventArgs e)
{
if (f == null || f.IsDisposed || f.Disposing) f = new Form2(...);
f.Show();
}