Вы можете обрабатывать события Activated и Deactivate вашей формы и использовать их для изменения логического значения уровня формы, которое сообщит вашему коду, имеет ли ваша форма фокус или нет, например:
private bool _IsActivated = false;
private void Form1_Activated(object sender, EventArgs e)
{
_IsActivated = true;
// turn off flashing, if necessary
}
private void Form1_Deactivate(object sender, EventArgs e)
{
_IsActivated = false;
}
Когда приходит сообщение, вы проверяете _IsActivated
, чтобы определить, является ли ваша Форма уже активным окном, и включаете мигание, если это не так. В активированном событии вы выключите мигание, если оно включено.
Свойство Focused
вашей формы всегда будет возвращать false
, если оно имеет какие-либо элементы управления. Это свойство относится к тому, имеет ли рассматриваемый элемент управления (в данном случае к форме) фокус в форме вашего приложения , а не к тому, имеет ли само приложение фокус в Windows.