Заблокировать пользователя с помощью форм Windows - c # - PullRequest
0 голосов
/ 21 июня 2010

Я работаю в приложении Windows, используя C #.Моя заявка состоит из 5 форм.Моя программа контролирует все 5 форм, чтобы блокировать пользователя по разным причинам, по которым он вызывается на основании UDP-сообщения, полученного моей программой.Только одна форма будет UP одновременно.Я хочу, чтобы поведение всех форм, таких как «Оно», блокировало весь экран, и пользователь не должен иметь возможность пропускать форму, пока моя программа не получит конкретное сообщение UDP.[Это приложение Kiosk, и пользователю запрещено использовать Alt + Tab и диспетчер задач]

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

Я пытался использовать функцию SetWindowPos, но не помогал.

что будет другим способом сделать это?

Ответы [ 3 ]

1 голос
/ 21 июня 2010

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

Установка свойства TopMost формы в True не является реальным исправлением, вы все равно потеряете, если окно другого приложения будет также самым верхним.Реальное исправление состоит в том, чтобы не устанавливать для свойства Enable формы значение False, а отключить элементы управления в этой форме.Самый простой способ сделать это - поместить панель в эту форму и переместить в нее все элементы управления.Установите для свойства Dock значение Fill.Установите для свойства Enable панели значение False, все элементы управления также будут отключены.Но не окно.

Кстати: не используйте UDP для важных сообщений.

0 голосов
/ 21 июня 2010

Может быть, у вас может быть форма с надписью «Ожидание X» или что-то в этом роде, в которой нет кнопок закрытия и т. Д., И которая появляется при необходимости в виде модального диалога приложения, чтобы избежать проблем со всеми окнамиприложение отключено, и в то же время он сообщает пользователю, почему он ничего не может сделать

0 голосов
/ 21 июня 2010

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

Я был бы удивлен, если бы эти необходимые функции были доступны в нативной библиотеке .Net, поэтому потребуется ссылка на API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...