Как показать диалог внутри формы внутри формы - PullRequest
0 голосов
/ 29 октября 2018

Я хочу

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, он «разблокируется», исчезает и диалоговое окно отображается четко.

Что я делаю не так?

...