2009-06-17 66 views
2

目的是在表单失去焦点时使不透明事件触发。该表格具有STAY ON TOP的设置。视觉效果是点击一个可能重叠的窗口,然而当不关注的窗体将保持在顶部,但在角落稍微透明,保持容易访问,但提供下面的东西的可见性。C# - 如何在表单失去焦点时触发不透明事件?

我已经使用Google和Google搜索了,并且无法弄清楚如何在表单失去焦点时正确触发此事件,然后当表单获得焦点恢复为将不透明度恢复到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

我认为我们需要更多的信息。我创建了一个Windows应用程序,在构造函数中连接了LostFocus事件,然后在LostFocus事件的方法中将Opacity设置为0.5。它对我来说工作得很好。 – jasonh 2009-06-17 22:06:14

+0

示例代码,所以我可以看到你做了什么? – SheldonH 2009-06-17 22:11:10

回答

6

听起来好像你正在寻找ActivatedDeactivate事件。

更新

在回应评论约LostFocus事件,也可能是感兴趣说明它是如何工作的。 FormLostFocus事件从Control继承。当一个控件失去焦点时它会被提出;要么是因为表单本身被停用(例如焦点移动到另一个应用程序),要么是因为焦点移动到同一表单中的另一个控件。

如果挂钩的LostFocus事件只包含至少一个控制的形式,可以接收焦点的事件处理程序,你会发现,在形式的LostFocus事件引发显示形式后立即 。这是因为焦点从窗体(这是一个Control)移动到窗体上的第一个可调焦控件。

所以,活动形式和聚焦形式是两个单独的行为。

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; 
} 
相关问题