2009-10-16 3 views
1

В моем приложении (C#, Windows Forms) У меня есть экран информации о телефоне: если есть входящий телефонный звонок, отображается окно с дополнительной информацией вызывающему.Удерживайте окно на переднем плане (даже если оно теряет фокус)

Это окно должно открываться на переднем плане и должно оставаться там, даже если пользователь пишет в другом окне (так что пользователь все еще видит информацию о входящем телефонном звонке).

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

Прямо сейчас я использую BringToFront и функцию user32.dll BringWindowToTop ->, которая работает, но если окно теряет фокус, оно находится в фоновом режиме.

Как реализовать это поведение?

+1

И Рэймонд Чен любит подчеркивать: Иногда вы не можете. Что, если две программы сделали это? – MSalters

+0

Хорошая цитата - но довольно немного злоупотребляла. – bernhardrusch

ответ

10

Я думаю, что вы хотите установить форму, как TopMost:

yourForm.TopMost = true; 
+0

TopMost: возвращает или задает значение, указывающее, появляется ли окно в самом верхнем z-порядке. Так что нет, это не так, когда вы хотите, чтобы форма оставалась на вершине, когда вы теряете фокус. – tzup

+1

@tzup: бросьте вместе небольшой образец проекта и попробуйте его. У вас есть сюрприз ... –

+0

делать это прямо сейчас :) ... – tzup