2014-01-02 3 views
0

Я пытаюсь разместить свою дочернюю форму поверх моей родительской формы. При переключении между экранами, когда дочерняя форма загружается, она теряет фокус и попадает в ловушку за родительской формой.C# ChildForm.ShowDialog (ParentForm) не работает должным образом

код я использую это:

childForm.ShowDialog(this.ParentForm); 

кажется, что при переключении между приложениями на другом экране, что форма ребенок теряет фокус на родительской форме.

РЕДАКТИРОВАТЬ После использования childForm.ShowDialog(this), она по-прежнему скрывается за родительской форме.

+0

Что такое 'this.ParentForm'? Вы уверены, что это не 'null'? –

+0

Да, вы правы, parentForm действительно null. Есть ли способ исправить это? – Kenny

+0

Ваш фрагмент полностью неадекватен, чтобы продемонстрировать проблему. В противном случае это обычная ошибка, когда вы скрываете окно перед отображением диалогового окна и затем восстанавливаете его. В течение короткого момента ни одно окно в вашем приложении не может получить фокус, когда диалог закрывается, поэтому Windows вынуждена искать другую. –

ответ

0

если вы хотите установить владельца формы, то вы можете это как -

childForm.ShowDialog(this); 
3

Казалось бы, что this.ParentForm является null, что означает, что вы код:

childForm.ShowDialog(null); 

Это объясняет поведение. Ваша дочерняя форма создается без окна владельца. Без окна владельца childForm не имеет причины появляться поверх основной формы, как вы ожидаете, так и намерены.

Я подозреваю, что вы хотите сделать this быть владельцем вашего окна, в этом случае вы должны изменить код на:

childForm.ShowDialog(this); 

или если this является активной формой, то достаточно написать:

childForm.ShowDialog(); 
0

вместо того чтобы сказать

childForm.ShowDialog(this.ParentForm); 

просто сказать

childForm.Show(); 

Если вы хотите установить владельца childform затем установите owner свойство формы в дизайне. См. Здесь для Form.Owner

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