2009-06-17 7 views
2

Le but est de déclencher l'événement d'opacité lorsque le formulaire perd le focus. Le formulaire a un paramètre pour rester sur le dessus. L'effet visuel serait de cliquer sur une fenêtre qui se chevauche éventuellement, et pourtant la forme non focalisée resterait sur le dessus, mais dans le coin légèrement transparent, en gardant un accès facile, mais en donnant une visibilité aux choses en dessous. J'ai googlé et googlé, et je n'arrive pas à comprendre comment faire pour que cet événement se déclenche correctement lorsque le formulaire perd son focus, puis lorsque les gains de forme se concentrent pour restaurer l'opacité à 100% ou le niveau déterminé ailleurs.C# - Comment déclencher un événement d'opacité lorsque le formulaire perd son focus?

Conseils?

// 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

Je pense que nous aurons besoin de plus d'informations. J'ai créé un WindowsApplication, câblé l'événement LostFocus dans le constructeur, puis dans la méthode pour l'ensemble d'événements LostFocus Opacity à 0.5. Cela fonctionne très bien pour moi. – jasonh

+0

exemple de code pour que je puisse voir ce que vous avez fait? – SheldonH

Répondre

6

Il semble que si vous êtes à la recherche pour les événements Activated et Deactivate.

Mise à jour

En réponse au commentaire sur l'événement LostFocus, il pourrait être intéressant de préciser comment il fonctionne. L'événement LostFocus du Form est hérité de Control. Il est levé quand un contrôle perd son focus; soit parce que le formulaire en tant que tel est désactivé (le focus passe à une autre application par exemple), soit parce que le focus passe à un autre contrôle dans le même formulaire.

Si vous connectez un gestionnaire d'événements pour l'événement LostFocus d'une forme qui ne contient que au moins un contrôle qui peut recevoir le focus, vous constaterez que l'événement LostFocus de la forme est soulevée immédiatement après le formulaire est affiché . Cela est dû au fait que le focus passe du formulaire (Control) au premier contrôle focalisable du formulaire. Ainsi, la forme étant active et la forme focalisée sont deux comportements distincts.

+0

ouais! Merci pour la réponse rapide. qui l'a réparé immédiatement. Je me sentais assez stupide, mais je ne connaissais pas mes événements correctement .... y a-t-il une feuille de triche pour les événements ou la liste de référence pour référence future? – SheldonH

+2

Désolé, je ne sais pas s'il y a une bonne feuille de triche. Peut-être que je devrais en faire un et poster sur mon blog ... une bonne idée. –

+0

les événements de perte de focus auraient été ma première pensée, mais c'est la façon gagnante – benPearce

0

Vous avez essayé de le faire avec des événements d'entrée/de sortie de souris?

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