Форма сверху самая? - PullRequest
       12

Форма сверху самая?

6 голосов
/ 27 ноября 2008

Как я могу отобразить что-то поверх всех других приложений. Я хочу отображать что-то поверх всех форм моей программы и всех других программ, открытых на моем рабочем столе (не моем).

* Наверх Большинство не работает, я проверял, и мой браузер может перейти поверх моего приложения: S

Вот изображение, когда я использую TopMost, чтобы ИСТИНА. Вы можете видеть, что мой браузер закончился ...

http://www.freeimagehosting.net/uploads/5a98165605.png

Ответы [ 4 ]

12 голосов
/ 27 ноября 2008

Вы можете использовать экземпляр формы и установить для свойства TopMost значение True.

<ч /> Если вы хотите работать со всеми Windows, есть еще один способ: Win32 Api , звонки.

Вот что вы могли бы сделать:

В вашем классе добавьте:

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

В форму загрузки вы можете добавить:

SetForegroundWindow(this.Handle);

Это должно сработать.

Обновление

TopMost должен выполнять эту работу, НО: самый верхний ИЛИ / И вызов Win32 Api будет работать только не в Visual Studio (хорошо для Vista, и с VS2008 я это проверял ... Я не могу сказать, для других). Попробуйте запустить программу с .Exe из каталога / bin, она будет работать.

7 голосов
/ 27 ноября 2008

Свойство Form.TopMost сделает вашу форму верхней формой над всеми другими запущенными приложениями Windows (не только вашими формами).

myForm.TopMost = true; // This will do the job
2 голосов
/ 27 ноября 2008

TopMost - это то, что вам нужно (с этим никогда не было проблем)


На MSDN написано:

Самая верхняя форма - это форма, которая перекрывает все другие (не самые верхние) формы, даже если это не активная или передняя форма. Самые верхние формы всегда отображаются в самой высокой точке в z-порядке окон на рабочем столе.

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.topmost.aspx

0 голосов
/ 12 июля 2009

В моей команде был внутренний инструмент, который продолжает работать после запуска Windows. Это WinForm с установленным значением TopMost. На Vista иногда у нас была такая же проблема. В очень случайное время форма теряет свойство TopMost, и над ним может появляться другое не самое верхнее окно. У меня был журнал исследований, но я не нашел ответа, и у многих других людей была такая же проблема, кажется, что в Vista на очень низком уровне есть ошибка в свойстве TopMost.

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