Я хочу
1) В моем главном окне у меня есть Form1
2) У меня есть специалист по фону, который ищет что-то особенное
3) Когда происходит что-то конкретное, я хочу «размывать» весь экран, поэтому я запускаю новую BlurForm внутри фонового рабочего (это работает)
4) И, кроме того, на этом BlurForm я хочу диалог, в котором пользователь вводит свое имя и возраст.
Мои проблемы:
1) Либо «размытие» исчезает сразу после вызова диалога
2) Все приложение "зависает"
Мой код:
MyBackgroundWorker.cs
var blurrer = new BlurForm(_parent) // _parent is Form1 (main Form)
blurrer.ShowSpecificDialog(new MyData(){...});
BlurForm.cs
public BlurForm(Form owner){
_owner = owner;
Initialize(owner); // Set width, color etc.
Show(); // Default method to show.
}
public DialogResult ShowSpecificDialog(MyData data){
var dialog = new MyDialog(this, data); // this = parent-form of the dialog
return dialog.ShowDialog(_owner);
}
Что теперь происходит, так это то, что BlurForm показывает (экран размыт, как я хотел), показывает диалог (но он также «покрыт» размытием (почему?)), И экран «зависает» (я думаю, размытие "блоков"). Как только я убираю фокус с BlurForm, он «разблокируется», исчезает и диалоговое окно отображается четко.
Что я делаю не так?