Как вызвать событие непрозрачности, когда форма теряет фокус?

2

Цель состоит в том, чтобы вызвать триггер события непрозрачности, когда форма теряет фокус. У формы есть настройка для 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;
               }

          }
  • 0
    Я думаю, что нам понадобится больше информации. Я создал WindowsApplication, связал событие LostFocus в конструкторе, а затем в методе для события LostFocus установил Opacity равным 0,5. Это прекрасно работает для меня.
  • 0
    пример кода, чтобы я мог видеть, что вы сделали?
Теги:
event-handling

2 ответа

6
Лучший ответ

Звучит так, как будто вы ищете Activated и Deactivate.

Обновление

В ответ на комментарий о событии LostFocus может быть интересно выяснить, как это работает. Событие LostFocus Form наследуется от Control. Он поднимается, когда элементы управления теряют фокус; либо потому, что форма как таковая деактивируется (например, фокус перемещается в другое приложение) или потому, что фокус перемещается в другое управление в той же форме.

Если вы подключите обработчик событий для события LostFocus формы, содержащей только хотя бы один элемент управления, который может получать фокус, вы обнаружите, что событие LostFocus формы создается сразу после того, как форма отображается. Это происходит потому, что фокус перемещается из формы (которая является Control) в первый настраиваемый элемент управления в форме.

Итак, активная форма и фокусируемая форма - это два отдельных поведения.

  • 0
    да уж! Спасибо за быстрый ответ. это исправило это немедленно. Я чувствовал себя довольно глупо, но просто не знал, правильно ли мои события .... есть ли шпаргалка для событий или список ссылок для дальнейшего использования?
  • 2
    Извините, не знаю, есть ли хороший шпаргалка. Может быть, я должен сделать один и опубликовать в своем блоге ... хорошая мысль.
Показать ещё 3 комментария
0

Вы пытались сделать это с помощью событий ввода/выключения мыши?

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;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню