Как держать окно всегда сверху - PullRequest
1 голос
/ 11 декабря 2011

Как я могу держать свое окно всегда наверху, даже если есть окно другого приложения с активированной опцией Topmost = true, которое пытается остаться перед моим окном?

Ответы [ 3 ]

1 голос
/ 11 декабря 2011

Вы можете выполнить вызов платформы на BringWindowToTop для достижения этого:

[DllImport("user32.dll", SetLastError=true)]
static extern bool BringWindowToTop(IntPtr hWnd);

[DllImport("user32.dll", SetLastError=true)]
static extern bool BringWindowToTop(HandleRef hWnd);

И вызовите его, когда сработает событие FocusLost .

1 голос
/ 26 июня 2014

Самый простой способ (при условии, что у вас уже установлен верхний промери) - это вызвать

myform.BringToFront();

в режиме FIXED, но с относительно небольшими временными интервалами (см. Класс Timer), через все время форма должна оставаться на вершине.

Если вызов этого события связан с событием, которое информирует вас о потере привилегий быть на вершине, это может вызвать перебои ресурсов между несколькими приложениями.Цена того, чтобы быть безопасным, заключается в том, что какая-то другая программа может обманывать, не обращая внимания на информацию, когда он перегружен вашей программой, но единственное решение для вас - это убить эту другую программу, если вы все время хотите оставаться на вершине: D

1 голос
/ 11 декабря 2011

Это должно быть возможно, установив Focus on window, из обработчика события OnFocusLost.

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