У меня есть диалог, реализованный в WinForms, который отображается как диалог уведомления в правом нижнем углу экрана. Проблема в том, что всякий раз, когда это показано, она фокусируется, и это происходит только тогда, когда TopMost = true. Как я могу это решить?Диалоги WinForms с TopMost = true
ответ
Вам необходимо наследовать от формы и переопределить ку Свойства:
[Flags]
enum WS_EX
{
TOPMOST = 0x00000008,
}
class TopMostForm : Form
{
protected override CreateParams CreateParams
{
get
{
var baseParams = base.CreateParams;
baseParams.ExStyle |= (int)WS_EX.TOPMOST;
return baseParams;
}
}
protected override bool ShowWithoutActivation
{
get { return true; }
}
}
Тогда просто покажите() на этой форме, и она будет отображаться как самая верхняя и неактивная.
Это не работает, если TopMost = true. Работает только тогда, когда TopMost = false. – Cornel
Упс, я думаю, что он показан TopMost, даже если TopMost = false. Правильно? – Cornel
Стиль окна WS_EX_TOPMOST делает ваше окно самым большим. Если вы посмотрите на свойство Form.TopMost в Reflector, вы увидите, что он использует другой подход, который делает ваше окно активным. –
Показать диалог с Show вместо ShowDialog. ShowDialog будет самым верхним, пользователь должен щелкнуть его, прежде чем делать что-то еще (модальное). Show покажет это как обычно.
Я открываю его с помощью метода Show() уже – Cornel
Как об этой стратегии:
- показать его при запуске, а затем сразу же:
- Скрыть его ShowWindow (SW_HIDE)
- Никогда не закрыть форму, только пусть это будет невидим
- Показать его с помощью ShowWindow (SW_SHOWNOACTIVATE)
- 1. Как переопределить свойство Topmost = true в C#?
- 2. C# TopMost и Tray
- 3. TopMost не является TopMost всегда - WPF
- 4. Окно TopMost, расположенное за окном без верхнего окна TopMost, иногда
- 5. SetWindowPostion TOPMOST
- 6. JavaScript и модальные диалоги
- 7. C# topmost window
- 8. Кнопка topmost in android
- 9. TopMost форму в теме?
- 10. Переключить TopMost в VB.NET
- 11. Начать процесс TOPMOST
- 12. Сделайте форму «больше TopMost», чем другая
- 13. BrowseForFolder-Dialog: центр и сделать TopMost
- 14. Windows Form TopMost не работает с BackgroundWorker?
- 15. Открытие WinForm с TopMost = true, но не с его кражей фокуса?
- 16. JDialog.setAlwaysOnTop (true) выводит все диалоги на передней панели под Windows
- 17. изменение TOPMOST во время выполнения
- 18. Есть ли эквивалент trace = true в Winforms?
- 19. Почему не MessageBox TopMost?
- 20. topmost window form steal focus
- 21. TopMost активен, но без фокуса
- 22. Как сделать безграничную форму TopMost?
- 23. Диалоги Android с навигацией
- 24. Как закрыть winform с помощью TopMost = true, когда другое приложение открывается поверх моего приложения
- 25. C# - Как бороться с 2 формами «TopMost»?
- 26. Диалоги (реальные)
- 27. TOPMOST окно в полноэкранном режиме
- 28. Диалоги удаления
- 29. Диалоговые диалоги для локализации
- 30. Сделать помощь-файл не TopMost
TopMost = false ;? или это было легко сказать: D – RvdK
Легко сказать. Мой клиент хочет его TopMost = true. – Cornel
Итак, вам нужен диалог сверху, но без фокуса? Всплывающее сообщение Sorta для новой почты? – RvdK