2010-04-20 3 views
2

я сталкивался с ситуацией, когда я пытаюсь запустить простую строку кода в методеForm.ShowDialog() не показывает форму

Dim Рез Как DialogResult = frmOptions.ShowDialog()

но ничего не происходит. Диалоговое окно не появится. Если я запустил этот метод из другого места в коде, он выполнит штраф (т. Е. Отобразит форму в диалоговом режиме, и после этого код будет прекрасен). Следовательно, это может быть способ, которым я пришел к этому коду, который вызывает мою проблему, но я не вижу, чтобы найти то, что неправильно.

Когда я приостанавливаю отладчик, строка кода выделяется зеленым цветом, но я не вижу, чтобы перешагнуть через нее или в нее.

Любая идея, что может привести к этому, или что я должен искать, что может вызвать проблемы?

Спасибо за помощь!

+0

Как выглядит остальная часть соответствующего кода? –

+1

[по телефону до документа] Эй, док, мне плохо. Что со мной не так?. ;-) Контекст, clawson, context .... –

ответ

5

Проблема заключалась в том, что активное окно, которое устанавливается в качестве владельца диалогового окна по умолчанию, было это TopMost свойство установлено в действительности. В результате диалоговое окно отображалось за окном владельца (TopMost).

Диалоговое окно представляет собой модальную форму, так как такие другие окна не могут быть выделены фокусом, поэтому программа, возникающая как ничто, происходит или работает, когда на самом деле диалоговое окно просто скрывается за верхней формой.

Причина, по которой код работает в других случаях, состоит в том, что активное окно при загрузке диалогового окна не имеет свойства TopMost, установленного в true, таким образом отображая диалоговое окно, как ожидалось.

+1

отредактируйте этот ответ, чтобы он дал ясное и очевидное решение проблемы, поставленной в вопросе, а затем принять его. Скорее всего, вы получите некоторые обороты. –

-1
Dim frmOptions As New YourFormClass() 
    Dim res As DialogResult = frmOptions.ShowDialog(me)