Неправильная MDIChildForm активируется, когда я закрываю другую MDIChildForm - PullRequest
0 голосов
/ 02 апреля 2020

Я работаю с приложением Winforms, которое использует макет MDi.

Target Framework. Net 4.5.2

Протестировано с обоими:

CefSharp 71.0. 2 и 79.1.360.

У меня проблема с порядком активации MDIihild после закрытия активного MDiChild.

Вот примерно то, что я делаю (это показывает активацию окна). A: Указывает, какая форма активирована в данный момент.

Я открываю форму поиска,

A: Searchform 1, I perform a search which opens
A: Searchresultform 1, where I select one of the searchresults which opens
A: Resultform 1

Пока все хорошо, я открываю новую форму поиска

A: Searchform 2, I perform a search which opens
A: Searchresultform 2, where I select one of the searchresults which opens
A: Resultform 2

Пока все еще хорошо, у меня теперь 6 дочерних форм открытый, красиво сложенный друг на друге. Теперь я закрываю верхнюю (Resultform 2), и открывается ожидаемая дочерняя форма (та, которая находится под ним в стеке).

A: Searchresultform 2, I close this one (still no problems)
A: Searchform 2, I close this one and now something weird happens
A: Resultform 1, which is on top of the stack is activated, but immediately 
A: Searchform 1, is activated putting itself on top of the stack (oh oh)

Далее я закрываю Searchform 1 и

A: Resultform 1, is activated but immediately
A: Searchresultform 1, is activated and when I close this
A: Resultform 1, is activated (which is the sole remaining window)

В приложении нет кода, который активирует windows.

Следует отметить, что это не работает (работает таким образом), если мы используем «новую» форму Resultform, содержащую встроенный браузер, используя CefSharp . Если мы используем «старую» форму результата, это поведение не происходит.

Меня интересует следующее:

a) Кто-нибудь испытывал подобное поведение и может указать мне общее направление? б) Кто-нибудь есть какие-либо предложения о том, как отладить это?

Я пытался посмотреть на стек вызовов, если я отлаживаю событие OnActivation, но он показывает только внешний код (не помогает мне).

Я не могу привести пример такого поведения, так как это, скорее всего, позволило бы мне разобраться самому (приложение> 100.000 * c).

...