Как вызвать событие непрозрачности, когда форма теряет фокус? - PullRequest
2 голосов
/ 18 июня 2009

Цель состоит в том, чтобы иметь триггер события непрозрачности, когда форма теряет фокус. Форма имеет настройку для STAY ON TOP. Визуальным эффектом будет нажатие на возможно перекрывающееся окно, и все же форма, на которой не сфокусировано, останется сверху, но в углу слегка прозрачной, что делает ее легкодоступной, но обеспечивает видимость для материала под ней.

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

          }

Ответы [ 2 ]

6 голосов
/ 18 июня 2009

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

Обновление

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

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

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

0 голосов
/ 18 июня 2009

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

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...