При щелчке левой кнопкой мыши приложение, сведенное к минимуму в systray и отображающее окно сообщения, диалог не отображается в фокусе при первом отображении, в то время как во второй раз он имеет фокус.VB.Net и MB_TOPMOST для диалогов?
Google, похоже, говорит, что решение заключается в настройке диалога с параметром MB_TOPMOST, но объект .Net MessageBox, похоже, не поддерживает этот параметр.
Так что я попытался следующие с non-.Net MsgBox, но это не решает проблему:
Public Class Form1
Private Sub LeftClick(sender As Object, e As EventArgs) Handles NotifyIcon1.Click
'Work-around to prevent Windows from triggering Click then right-click
Dim MyButton As System.Windows.Forms.MouseEventArgs = e
If MyButton.Button = MouseButtons.Left Then
'MessageBox apparently unable to handle MB_TOPMOST
'MessageBox.Show(Str, "Output", ????)
'Doesn't work
Const MB_TOPMOST As Integer = &H40000
MsgBox("Hello there", MsgBoxStyle.OkOnly Or MB_TOPMOST, "Out of focus")
End If
End Sub
End Class
ли кто-то нашел работу вокруг?
спасибо.
Вы решение неправильно проблема. MB_TOPMOST не исправляет проблему фокуса, окно сообщения уже находится поверх других окон. У него просто нет фокуса. Ошибка Windows afaik. –
Спасибо. Я посмотрю, как перенести фокус на диалог в первый раз. – Gulbahar
Я довольно положительный MsgBox также является текстовым сообщением .NET, это просто «режим совместимости» для кода VB6. Для не-NET вы должны использовать ссылку COM, инструкции 'Declare' или аналогичные. – Neolisk