2009-08-11 2 views
1

У меня есть проект с несколькими формами, и когда, например, форма A открывает форму B, которая открывает форму C, форма C закрывается, форма B и форма A перешли в обратную сторону окна , чтобы все открытые программы были показаны перед этими другими формами проекта..net Window Order

Почему это происходит и как я могу позаботиться о том, чтобы последняя открытая форма была показана, когда закрыта другая форма?

ответ

3

Убедитесь, что вы устанавливаете Owner свойства формы, которые открываются с помощью других элементов управления или форм, либо путем установки свойства явно или пропускания владельца в качестве параметра Show() или ShowDialog().

1

Вы можете отслеживать «последнюю» форму в каждой из ваших форм, а при закрытии ее активировать. т.е.: если форма B открывает форму C, форма C может содержать ссылку на форму B (или любую форму для активации при закрытии) и принудительно перемещать ее на передний план при закрытии формы.

Это, как мне кажется, я считаю, что часто лучше просто позволить операционной системе выполнять обычное манипулирование/обработку окна, если только не существует определенной причины для его отмены. Приложения, которые заставляют их окна выходить на передний план, часто раздражают меня - вместо того, чтобы быть полезными, он может быть разрушительным для ваших пользователей.

+0

Не то, чтобы я хочу нарушить поток, это то, что сама моя программа является нарушенной. При закрытии формы C самая верхняя форма должна быть той, которая открывала ее, в форме B. Даже если другая программа была/не была/поднята между ними, другие программы покупаются перед Формой B, когда форма C закрыта. – Totty

+0

Тогда первый абзац, который я написал, должен хорошо работать для вас - просто активируйте другую форму, когда вы закрываете/скрываете ее спереди. Это может быть одно свойство Form, которое, если оно не является нулевым, активируется. –

+0

Существует уже механизм для достижения этого, однако, в свойстве владельца формы. –

0

У вас может быть серия форм диалога, открытая из одной формы, в порядке. Это позволяет вам проверить DialogResult - тогда вы сможете контролировать направление, в котором вы открываете новые формы или показывать старые формы.

Если вы беспокоитесь о z-порядке так много форм, вы можете подумать об изменении своего пользовательского интерфейса, чтобы избежать нескольких немодальных окон.

0

Возможно, вам нужно настроить новые формы как модальный диалог с владением старыми формами. Таким образом, когда новая форма закрывается, новая форма будет видна. Кроме того, если новая форма открыта, никто не сможет получить доступ к более старым формам.

Смежные вопросы