Поскольку ваш код не определяет проблему напрямую, мне придется сделать предположение.
Я считаю, что где-то в вашем звонке предыдущее соединение не было закрыто и поэтому не может быть снова открыто.
Я настоятельно рекомендую вам заменить ваш SQL-запрос на использование операторов, чтобы обеспечить эффективное закрытие всего соединения, а также избавиться от соединения по завершении.
Если вы сделаете это без приложения, ошибки такого типа не произойдет.
using (SqlConnection cn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand("DELETE FROM data WHERE item ='" + listBox1.SelectedItem + "'", cn);
{
cn.Open();
cmd.ExecuteNonQuery();
}
}