Цель состоит в том, чтобы вызвать триггер события непрозрачности, когда форма теряет фокус. У формы есть настройка для STAY ON TOP. Визуальный эффект состоял бы в том, чтобы щелкнуть по возможному перекрывающемуся окну, и тем не менее форма, когда она не сфокусирована, будет оставаться на вершине, но в углу слегка прозрачна, сохраняя ее в пределах легкого доступа, но обеспечивая видимость под ней.
Я искал googled и googled, и не могу понять, как заставить это событие нормально стрелять, когда форма теряет фокус, а затем, когда форма получает фокус назад, чтобы восстановить непрозрачность до 100% или уровень, определенный в другом месте.
Советы?
// under designer.cs
//
// CollectionToolForm
//
//other code....
this.LostFocus += new System.EventHandler(goTransparent);
//method
private void goTransparent(object sender, EventArgs e)
{
if (transparentCheck.Checked == true)
{
this.Opacity = 0.50;
}
else
{
this.Opacity = 1;
}
}
Звучит так, как будто вы ищете Activated
и Deactivate
.
Обновление
В ответ на комментарий о событии LostFocus
может быть интересно выяснить, как это работает. Событие LostFocus
Form
наследуется от Control
. Он поднимается, когда элементы управления теряют фокус; либо потому, что форма как таковая деактивируется (например, фокус перемещается в другое приложение) или потому, что фокус перемещается в другое управление в той же форме.
Если вы подключите обработчик событий для события LostFocus
формы, содержащей только хотя бы один элемент управления, который может получать фокус, вы обнаружите, что событие LostFocus
формы создается сразу после того, как форма отображается. Это происходит потому, что фокус перемещается из формы (которая является Control
) в первый настраиваемый элемент управления в форме.
Итак, активная форма и фокусируемая форма - это два отдельных поведения.
Вы пытались сделать это с помощью событий ввода/выключения мыши?
public Form1()
{
this.MouseEnter += new System.EventHandler(this.Form1_MouseEnter);
this.MouseLeave += new System.EventHandler(this.Form1_MouseLeave);
}
private void Form1_MouseLeave(object sender, EventArgs e)
{
this.Opacity = 0.5;
}
private void Form1_MouseEnter(object sender, EventArgs e)
{
this.Opacity = 1;
}