Принудительный фокус для настольных приложений, встроенных в .NET - PullRequest
1 голос
/ 30 июля 2010

У меня есть производственное приложение, на котором я всегда хочу сосредоточиться.Иногда пользователи случайно щелкают по форме, и синее сфокусированное окно становится серым.У меня есть таймер, который срабатывает каждые 30 секунд, и я хочу программно вернуть фокус обратно форме, чтобы она перешла из серого обратно в синий с фокусом.Я пытался использовать событие .focus и свойство .activecontrol, но ни один из них, похоже, не работает, и я не вижу никаких других жизнеспособных вариантов.Конечно, есть способ сделать это, правда?Я использую Visual Studio 2008 в VB.Net.

Пожалуйста, сообщите.

Ответы [ 3 ]

2 голосов
/ 30 июля 2010

Мне повезло, используя свойство this.TopMost = true;

private void frmMain_Shown(object sender, EventArgs e)
{
// Make this form the active form and make it TopMost
this.ShowInTaskbar = false;
this.TopMost = true;
this.Focus();
this.BringToFront();
this.TopMost = false;
}

Вы можете попробовать создать функцию и вызвать ее из своего кода таймера. (Извините, это в C #).

2 голосов
/ 30 июля 2010

Нет, пути нет [больше.] Даже если вы сфокусируете внимание на приложении, лучшее, на что вы можете надеяться, это то, что его значок на панели задач будет мигать три раза.Слава Богу, они исправили это (начиная с XP, я думаю?), Поскольку пока я вижу вашу точку зрения, для пользователей такое поведение является адским.Они должны контролировать свою операционную систему и приложения, а не вы.Извините!

0 голосов
/ 17 февраля 2013

Это то, что я использовал, чтобы вернуть фокус к моему приложению, когда пользователь щелкает всплывающее окно с уведомлением:

'My app is maximized always, so change this as you need. WindowState focuses your application
Me.WindowState = FormWindowState.Maximized

'Bring the desired from to fucos
MyForm.Activate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...