C# - 当表单失去焦点时如何触发不透明度事件?

She*_*onH 2 c# event-handling

目的是在窗体失去焦点时触发不透明度事件.表单有一个STAY ON TOP的设置.视觉效果是点击一个可能重叠的窗口,然而未聚焦的形式将保持在顶部,但在角落稍微透明,使其易于访问,但提供对下面的东西的可见性.

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

          }
Run Code Online (Sandbox Code Playgroud)

Fre*_*örk 6

听起来好像你正在寻找Activated和Deactivate事件.

更新

在回应关于LostFocus事件的评论时,可能有必要澄清它是如何工作的.继承自的LostFocus事件.当控件失去焦点时会引发它; 或者因为这样的表单被停用(例如焦点移动到另一个应用程序),或者因为焦点移动到同一表单中的另一个控件.FormControl

如果为LostFocus只包含至少一个可以获得焦点的控件的表单事件挂钩事件处理程序,您会发现在显示表单后立即LostFocus引发表单事件.这是因为焦点从表单(即a )移动到表单上的第一个可聚焦控件.Control

因此,活跃的形式和聚焦的形式是两个独立的行为.

  • 对不起,不知道是否有好的备忘单.也许我应该制作一个并在我的博客上发帖......好好想一想. (2认同)