Я использую WinForms для проекта C #, и моя основная форма имеет простую кнопку, которая использует ShowDialog (this) во второй форме, чтобы показать его.Как это:
if (myParameterForm.ShowDialog(this) == DialogResult.OK)
{//stuff happens}
Согласно моим требованиям, когда дочерняя форма видима, вы не можете получить доступ к родительской форме.
В течение прошлого года эта дочерняя форма была проклятием моейПриложению так же таинственно удается время от времени прятаться за родительской формой.Причина, по которой это является такой большой проблемой, заключается в том, что программное обеспечение предназначено для использования из сенсорного киоска, поэтому пользователь имеет доступ только к сенсорному экрану, но дочерняя форма заблокировала ввод из любой формы, но сама до тех пор, пока она не будет подтверждена(закрывается с помощью ok или отмены).
При загрузке дочерняя форма использует «this.TopMost = true» на всякий случай, я добавил это, чтобы решить мою проблему.Я не использую никаких других функций визуализации в дочерней форме, поток, вызывающий форму, буквально ждет там, пока форма не будет закрыта.
Так как у пользователя нет доступа к клавиатуре или чему-либо, кроме сенсорного экрана, я раздраженотносительно того, как дочерней форме удается скрыться за родительской формой.На самом деле мне не удалось воспроизвести поведение, и я видел его только в результате ответа на запросы на обслуживание.
Я хочу избежать использования таймера для постоянной проверки, является ли форма TopMost, потому что она просто кажется неправильной,Должен ли я пересмотреть?Какое событие может произойти, что исключает мою дочернюю форму за кулисами?
Я пытался использовать поиск, но, насколько я могу судить, я делаю это правильно ... Предполагая, что есть какой-то зловещийСтороннее приложение, вызывающее случайные перебои, каков наилучший способ автоматически выявлять и исправлять эту ситуацию без периодической проверки?Я не уверен, что именно событие VisibleChanged - это то, что я ищу.