Управлять отключением определенных элементов управления проще, разместив их внутри панели и отключив эту панель, чем отключая отдельные элементы управления:
controlPanel.Enabled = false;
Распространенным способом блокирования других задач, которые могут удовлетворить ваши потребности, является отображение верхней формы с индикатором выполнения. Я реализовал это в прошлом с успехом. Другие программы делают то же самое. Например, в WinRAR, когда приложение занято извлечением или сжатием файлов, приложение отображает самую верхнюю форму. Это похоже на «модальную» форму, но на самом деле вы все равно можете нажать на другие функции, на которые WinRAR спрашивает: «Вы хотите прервать текущую операцию?»
Отключение всего приложения часто не является необходимым и может быть не интуитивно понятным. Итак, спросите себя, действительно ли вам нужно заблокировать взаимодействие с формой. Например, у меня есть приложение, которое требует определенного времени для выполнения определенных задач. Я предоставляю индикатор выполнения для этой конкретной части работы, но вы все равно можете взаимодействовать с приложением, чтобы запускать дополнительные задачи, которые выполняются одновременно. Даже если я позволю вам выполнять только одну задачу за раз, вы все равно можете просмотреть файл справки или установить настройки приложения во время выполнения задачи. Кроме того, я даю пользователю кнопку, которая позволяет им остановить задачу. Отключение формы предотвратит этот тип взаимодействия.